WO2024110148A1 - Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug - Google Patents
Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug Download PDFInfo
- Publication number
- WO2024110148A1 WO2024110148A1 PCT/EP2023/080001 EP2023080001W WO2024110148A1 WO 2024110148 A1 WO2024110148 A1 WO 2024110148A1 EP 2023080001 W EP2023080001 W EP 2023080001W WO 2024110148 A1 WO2024110148 A1 WO 2024110148A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- function blocks
- processor
- program code
- compiler
- information technology
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000005516 engineering process Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 description 72
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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
- G06F8/451—Code distribution
- G06F8/452—Loops
Definitions
- the invention relates to a method for operating an information technology system according to the type defined in more detail in the preamble of claim 1, a corresponding information technology system and a vehicle with such an information technology system.
- Information technology systems such as computers, embedded systems or similar computing devices have become indispensable in everyday life for solving a wide range of problems.
- One development goal is to increase the performance of hardware components while miniaturizing them. This makes it possible to solve complex tasks, even in the context of mobile applications.
- Modern vehicles have a wide variety of control units, for example for powertrain control, navigation route calculation or communication connection of the vehicle to the Internet.
- Computationally powerful hardware components are essential in order to be able to calculate time-critical control signals sufficiently quickly, for example, to maintain the user experience by processing user inputs sufficiently quickly and issuing corresponding responses sufficiently quickly, and the like.
- the production costs of vehicles must not increase disproportionately through the integration of such computing devices. This makes the development of computer systems intended for the automotive sector particularly challenging.
- a well-known approach to speeding up computer-based problem solving is parallelization.
- Modern processors can have multiple execution units, such as processing cores, which allows so-called multi-threading, i.e. the simultaneous processing of different tasks by one and the same processor.
- SIMD Single-Instruction-Multiple-Data
- CPU processor
- WO 2007/113369 A1 discloses a method for generating a parallel executable program.
- the method describes compiling a computer program from a source code into an executable code, whereby a data flow graph is generated from the corresponding source code and this is examined to examine data dependencies.
- the executable program generated in this way is divided into individual packages that are distributed among the individual execution units of the processor of the computing device used.
- the execution order is determined as late as possible in order to take into account the computing architecture of the computing device currently used. This enables particularly efficient load distribution across the individual execution units of processors, regardless of the variety of variants of the computing devices that can be used to process the program.
- the increase in computing speed is based on distributing individual program parts across multiple execution units of one or more processors in order to parallelize program sequences.
- the present invention is based on the object of specifying an improved method for operating an information technology system, with the aid of which the performance of information technology systems is increased even further.
- this object is achieved by a method for operating an information technology system with the features of claim 1.
- Advantageous embodiments and further developments as well as a corresponding information technology system suitable for carrying out the method according to the invention and a vehicle with such an information technology system emerge from the dependent claims.
- a generic method for operating an information technology system wherein program code that can be used by a processor to process at least one task is divided into at least two function blocks by a compiler in a compilation step and these are arranged in a data flow graph and the compiler analyzes the data flow graph to determine an execution order of the respective function blocks by the processor, is further developed according to the invention in that the compiler determines function blocks that can be executed in parallel by the processor when processing the at least one output, checks for each group of function blocks that can be executed in parallel whether at least program code parts of at least two function blocks require the execution of the same instruction by the processor and assigns these program code parts to the same execution unit of the processor for simultaneous processing in accordance with single-instruction-multiple-data.
- the method according to the invention can be used to increase the degree of parallelization of programs even further. This means that not only is it possible to process different programs simultaneously with a processor that has multiple execution units, but one and the same execution unit of the processor is also able to process different parts of the same program simultaneously in one computing unit.
- the simultaneous execution of sub-functions of one and the same task allows clock time on the processor to be saved and thus the underlying task to be solved more quickly, i.e. the corresponding program to be processed more quickly.
- the processor can have several execution units, for example processor cores.
- the processor does not necessarily have to have several physical execution units.
- the processor can also be designed to perform multi-threading.
- the processor can be a central processing unit, better known as a central processing unit (CPU), a graphics processor, better known as a graphics processing unit (GPU), or another dedicated programmable computing unit, for example integrated on a system-on-a-chip (SoC).
- CPU central processing unit
- GPU graphics processing unit
- SoC system-on-a-chip
- a function block typically has an input interface and an output interface. The input interface provides the required data to the function block and the output interface provides the result generated by the respective function block. If a function block requires a specific result from another function block or if the function block passes its calculated result to another function block, these function blocks cannot be executed in parallel. However, if two function blocks have no dependencies with regard to their respective input and output data, they can generally be executed in parallel.
- the compiler determines the number of instructions to be processed by the processor for the parallel executable function blocks and, for a respective group of parallel executable function blocks, incorporates placeholder instructions into the respective function blocks for those function blocks that contain fewer instructions than the function block with the maximum number of instructions in the respective group, so that all function blocks in a respective group contain the same number of instructions. If the function blocks in a group of parallel executable function blocks contain the same number of instructions to be executed by the processor, a particularly simple and efficient assignment is possible. according to single instruction multiple data of the program code parts to the same execution unit of the processor. In this context, instructions mean the presence of the same instruction in all function blocks of the group of parallel executable function blocks.
- this instruction can be the "Add” or "Multiply” command. If individual program code parts deviate from this instruction or are missing, for example if the "Multiply” instruction is used instead of "Add" or a command line is missing entirely, a placeholder instruction must be introduced at the appropriate point in the respective functionality block in order to be able to assign the program code parts according to single instruction multiple data.
- the compiler checks whether the loops of the function blocks containing the program code parts assignable to the same execution unit of the processor according to Single-Instruction-Multiple-Data include a different number of iterations; and if this is the case:
- the compiler causes the respective program code parts of the function blocks corresponding to the lowest number of iterations to be processed simultaneously by the same execution unit of the processor and those program code parts of the function blocks with a higher number of iterations to be processed sequentially by the processor according to the remaining iterations.
- a particularly simple and efficient implementation of the method according to the invention is possible if the program code parts to be assigned to the same execution unit of the processor according to single-instruction-multiple-data consist only of a similar instruction.
- the corresponding program code parts of the function blocks can, however, also contain loops. If several function blocks have a different number of iterations of the corresponding loops, only those program code parts can be parallelized according to single-instruction-multiple-data which are the same instructions in the function blocks of the group of parallel executable function blocks, according to the Number of iterations of the loop with the lowest number of iterations. In other words, for the program code parts of the function block with the higher number of iterations, there are no longer any corresponding instructions from the rest of the function block available for simultaneous distribution to the processor's execution unit. The corresponding surplus is then processed sequentially by the processor.
- a processor capable of multi-threading at least two different tasks are processed in parallel on at least two different execution units of the processor.
- This allows the degree of parallelization to be increased even further.
- the inventive method for assigning the program code parts according to single instruction multiple data is applied individually for each task on each execution unit of the processor.
- several tasks can be processed simultaneously on several execution units and parallelization can take place on each individual execution unit according to the inventive method.
- an information technology system is set up to carry out a method described above.
- the information technology system can be a known computing device such as a PC, an embedded system, an SoC or the like.
- the method according to the invention can be used particularly profitably in the context of embedded systems in particular, since comparatively weak hardware components are installed here, which makes it necessary to use other measures to increase computing efficiency.
- Such an information technology system is particularly preferably integrated into a vehicle according to the invention.
- the vehicle can be any vehicle such as a car, truck, van, bus or the like.
- the information technology system can form a central on-board computer, a control unit of a vehicle subsystem or the like.
- Several such information technology systems can also be integrated into the vehicle.
- Fig. 1 a representation of a program code divided into individual function blocks as a data flow graph
- Fig. 2 Pseudocode of the functional blocks C and D shown in Fig. 1 and an assignment of instructions contained in the pseudocode to the same execution unit of a processor according to a method according to the invention.
- Figure 1 shows, in an abstracted representation as a data flow graph 3, a program code executed on an information technology system to solve one or more tasks 1.1, 1.2, divided into individual function blocks 2.
- a function block 2 corresponds to a separately calculable subproblem of the respective task
- the processor of the information technology system can be configured to perform multi-threading, which enables the parallel processing of several tasks 1.1,
- Each task 1.1, 1.2 is assigned to an individual execution unit of the processor, for example separate processing cores. This represents a first possibility for parallelizing programs. To maintain clarity, only some of the similar reference objects are provided with reference symbols in the figures.
- the individual function blocks 2 have input interfaces 2.E for reading in input data and output interfaces 2.A for outputting calculation results. Taking into account the corresponding data dependencies, an execution sequence of the function blocks 2 can be derived. In an information technology system known from the state of the art, the individual function blocks 2 of the respective tasks 1.1 and 1.2 are each executed sequentially one after the other. However, this wastes computing capacity, since individual function blocks 2 or program code parts contained in the respective function blocks 2 could also be executed in parallel.
- a method according to the invention is used which allows the instructions 5 contained in the individual function blocks 2, shown in more detail in Figure 2, to be distributed across the processor in such a way that parts of a single task 1.1 can also be parallelized.
- the method according to the invention provides that similar instructions 5 from parallel-executable function blocks 2 are assigned to the same execution unit of the processor according to Single-Instruction-Multiple-Data (SIMD). The same instruction is therefore applied to the different register areas of the same register in one computing cycle.
- SIMD Single-Instruction-Multiple-Data
- SIMD Single-Instruction-Multiple-Data
- the method according to the invention provides for a corresponding compiler to analyze the data flow graph 3 shown in Figure 1 and thereby determine the said execution order of the respective function blocks 2.
- Function blocks 2 can be executed in parallel if there are no dependencies between the data exchanged via the input interfaces 2.E and output interfaces 2.A. In Figure 1, this is the case for function blocks C and D as well as C and B, for example.
- function blocks A and H can also be parallelized. Parallelization for function blocks E and F and for task 1.2 for function blocks M, N, O and Q is not possible due to the dependencies.
- Figure 2 shows the program code parts included in function blocks C and D in abstract form as pseudocode.
- any conceivable programming language can generally be used to implement the method according to the invention.
- the "Mov" command describes the movement of a data item from one register to another or from a memory to a register. Accordingly, the number 42 or 30 is assigned to the register rO.
- the commands "Mov” and "Add” are instructions to be executed by the processor of the information technology system 5. Instead of an addition, a multiplication or something similar could also be requested.
- the loop shown in function block C counts backwards from 42 to 0. The counting backwards is implemented by the code line "Add rO, rO, -1".
- the two code lines "Add r1, [r2], + rO" from function block C and "Add r1, [r2], 0" of function block D correspond to the same instruction 5 for the processor and access the same register areas. They are therefore suitable for applying the inventive assignment of the instructions 5 to the same execution unit of the processor of the information technology system according to single-instruction-multiple-data according to the inventive method.
- the loops contained in the function blocks C and D have a different number of iterations and a different number of instructions 5.
- a so-called placeholder instruction 6 is first inserted into the function block C.
- the function blocks C and D then have the same number of instructions 5.
- the designation "nop" is used as placeholder instruction 6 and causes the processor to not perform any arithmetic operation when reading in placeholder instruction 6.
- program code parts of function block C are first executed sequentially on the processor executed, followed by a parallel execution of the program code parts of function blocks C and D.
- the loop of function block C has 42 iterations and the loop of function block D has 30 iterations.
- the loop of function block C is thus first executed sequentially 12 times before the program code of function blocks C and D is then executed 30 times together on the same execution unit of the processor.
- parallel execution could also take place first, followed by sequential execution.
- the program code "Add r1a, [r2a], 0 & r1b, [r2b], +r0" marked by a dashed box in Figure 2 describes the part of the parallelized program code that actually leads to the gain in computing efficiency.
- the part "Add rO, rO, -1" also has to be executed less often, namely 12 times in the sequential loop and 30 times in the parallelized loop (i.e. 42 times in total), instead of 42 times sequentially and 30 times sequentially (i.e. 72 times in total) according to the state of the art.
- the register r1 and the register r2 are each divided into a register area a and a register area b.
- the program code therefore provides that the register areas b of the first and second registers are accessed according to the function block C and the register areas a of the first and second registers are accessed according to the program code of the function block D.
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Die Erfindung betrifft ein Verfahren zum Betrieb eines informationstechnischen Systems, wobei zum Abarbeiten wenigstens einer Aufgabe (1.1, 1.2) durch einen Prozessor nutzbarer Programmcode in einem Kompilierungsschritt durch einen Compiler in wenigstens zwei Funktionsblöcke (2) unterteilt und diese in einem Datenflussgraph (3) angeordnet werden und der Compiler den Datenflussgraph (3) zum Ermitteln einer Ausführungsreihenfolge der jeweiligen Funktionsblöcke (2) durch den Prozessor analysiert. Das erfindungsgemäß Verfahrenen ist dadurch gekennzeichnet, dass der Compiler durch den Prozessor beim Abarbeiten der zumindest einen Aufgabe (1.1, 1.2) parallel ausführbare Funktionsblöcke (2) ermittelt, für jede Gruppe (4) parallel ausführbarer Funktionsblöcke (2) prüft, ob zumindest Programmcodeteile von wenigstens zwei Funktionsblöcken (2) die Ausführung derselben Instruktion (5) durch den Prozessor erfordern und diese Programmcodeteile gemäß Single-Instruction-Multiple-Data derselben Ausführungseinheit des Prozessors zur gleichzeitigen Abarbeitung zuweist.
Description
Verfahren zum Betrieb eines informationstechnischen Systems, informationstechnisches System und Fahrzeug
Die Erfindung betrifft ein Verfahren zum Betrieb eines informationstechnischen Systems nach der im Oberbegriff von Anspruch 1 näher definierten Art, ein entsprechendes informationstechnisches System sowie ein Fahrzeug mit einem solchen informationstechnischen System.
Informationstechnische Systeme wie Computer, eingebettete Systeme oder ähnliche Rechenvorrichtungen sind zur Lösung verschiedenster Probleme aus dem Alltag nicht mehr wegzudenken. Ein Entwicklungsziel ist es dabei die Leistungsfähigkeit der Hardwarekomponenten bei gleichzeitiger Miniaturisierung zu erhöhen. Dies ermöglicht das Lösen komplexer Aufgabenstellungen auch im Kontext von mobilen Anwendungen.
So nimmt mit zunehmender Digitalisierung auch die Bedeutung von Rechnersystemen in Fahrzeugen zu. Moderne Fahrzeuge verfügen über die verschiedensten Steuergeräte, beispielsweise zur Antriebsstrangregelung, Navigationsroutenberechnung oder Kommunikationsanbindung des Fahrzeugs an das Internet. Rechenstarke Hardwarekomponenten sind dabei unerlässlich, um beispielsweise zeitkritische Steuersignale ausreichend schnell berechnen zu können, zur Wahrung des Nutzererlebnisses indem Nutzereingaben ausreichend schnell verarbeitet werden und entsprechende Antworten ausreichend schnell ausgegeben werden und dergleichen. In Fahrzeugen steht ferner nur ein begrenzter Bauraum zur Integration von Rechenkomponenten zur Verfügung. Zudem dürfen die Herstellungskosten von Fahrzeugen durch die Integration solcher Rechenvorrichtungen nicht unverhältnismäßig ansteigen. Dies gestaltet die Entwicklung von für den Automotivbereich vorgesehenen Rechnersystem besonders herausfordernd. Zusammengefasst liegt somit das Bedürfnis vor, die Leistungsfähigkeit und Effizienz von Rechenkomponenten beständig zu verbessern.
Ein hinreichend bekannter Ansatz zur Beschleunigung von rechnergestützten Problemlösungen ist die Parallelisierung. Moderne Prozessoren können über mehrere Ausführungseinheiten, beispielsweise Rechenkerne, verfügen, was das sogenannte Multi- Threading, also das gleichzeitige Abarbeiten unterschiedlicher Aufgaben, durch ein und denselben Prozessor, erlaubt.
Eine weitere Möglichkeit zur Steigerung der Recheneffizienz ist Single-Instruction- Multiple-Data (SIMD). SIMD ermöglicht es Rechnersystemen die gleiche Rechenoperation simultan auf mehrere Datenpunkte anzuwenden. Beispielsweise bei einem PC lässt sich hierdurch die erforderliche Anzahl an Schreib- und Lesezugriffen auf den Arbeitsspeicher sowie die durch den Prozessor (CPU) auszuführende Anzahl an Rechenoperationen reduzieren. Entsprechend kann die von einem Programm beanspruchte Zeit zum Lösen einer Aufgabe reduziert werden. So beschreibt beispielsweise D. Nuzman et al., "Vapor SIMD: Auto-vectorize once, run everywhere," International Symposium on Code Generation and Optimization (CGO 2011), 2011 , pp. 151-160, doi:
10.1109/CGO.2011.5764683 wie Compiler Schleifen transformieren, um mehrere Iterationen derselben Schleife parallel in SIMD-Instruktionen zu kodieren.
Ferner offenbart die WO 2007/113369 A1 ein Verfahren zum Generieren eines parallel ausführbaren Programms. Das Verfahren beschreibt das Kompilieren eines Computerprogramms aus einem Quellcode in einen ausführbaren Code, wobei aus dem entsprechenden Quellcode ein Datenflussgraph erzeugt und dieser zum Untersuchen von Datenabhängigkeiten untersucht wird. Das so erzeugte ausführbare Programm wird in einzelne Pakete unterteilt, die auf die einzelnen Ausführungseinheiten des Prozessors der verwendeten Rechenvorrichtung aufgeteilt werden. Dabei erfolgt die Bestimmung einer Ausführungsreihenfolge so spät wie möglich, um der Rechenarchitektur der aktuell verwendeten Rechenvorrichtung Rechnung zu tragen. Dies ermöglicht eine besonders effiziente Lastverteilung auf die einzelnen Ausführungseinheiten von Prozessoren, unabhängig von einer Variantenvielfalt der zur Abarbeitung des Programms verwendbaren Rechenvorrichtungen. Auch hier basiert die Steigerung der Rechengeschwindigkeit darauf, zur Parallelisierung von Programmabläufen einzelne Programmteile auf mehrere Ausführungseinheiten eines oder mehrerer Prozessoren zu verteilen.
Der vorliegenden Erfindung liegt die Aufgabe zugrunde ein verbessertes Verfahren zum Betrieb eines informationstechnischen Systems anzugeben, mit dessen Hilfe die Leistungsfähigkeit von informationstechnischen Systemen noch weiter gesteigert wird.
Erfindungsgemäß wird diese Aufgabe durch ein Verfahren zum Betrieb eines informationstechnischen Systems mit den Merkmalen des Anspruchs 1 gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen sowie ein entsprechendes zur Ausführung des erfindungsgemäßen Verfahrens geeigneten informationstechnischen Systems und ein Fahrzeug mit einem solchen informationstechnischen System ergeben sich aus den hiervon abhängigen Ansprüchen.
Ein gattungsgemäßes Verfahren zum Betrieb eines informationstechnischen Systems, wobei zum Abarbeiten wenigstens einer Aufgabe durch einen Prozessor nutzbarer Programmcode in einem Kompilierungsschritt durch einen Compiler in wenigstens zwei Funktionsblöcke unterteilt und diese in einem Datenflussgraph angeordnet werden und der Compiler den Datenflussgraph zum Ermitteln einer Ausführungsreihenfolge der jeweiligen Funktionsblöcke durch den Prozessor analysiert, wird erfindungsgemäß dadurch weitergebildet, dass der Compiler durch den Prozessor beim Abarbeiten der zumindest einen Ausgabe parallel ausführbare Funktionsblöcke ermittelt, für jede Gruppe parallel ausführbarer Funktionsblöcke überprüft, ob zumindest Programmcodeteile von wenigstens zwei Funktionsblöcken die Ausführung derselben Instruktion durch den Prozessor erfordern und diese Programmcodeteile gemäß Single-Instruction-Multiple- Data derselben Ausführungseinheit des Prozessors zur gleichzeitigen Abarbeitung zuweist.
Mit Hilfe des erfindungsgemäßen Verfahrens lässt sich der Grad der Parallelisierung von Programmen noch weiter steigern. So ist es nicht nur möglich gleichzeitig mit einem über mehrere Ausführungseinheiten verfügenden Prozessors unterschiedliche Programme abzuarbeiten, sondern ein-und-dieselbe Ausführungseinheit des Prozessors wird dazu in die Lage versetzt, in einem Rechentankt gleichzeitig unterschiedliche Teile desselben Programms abzuarbeiten. Das gleichzeitige Ausführen von Teilfunktionen ein und derselben Aufgabe erlaubt es Taktzeit auf dem Prozessor einzusparen und somit die zu Grunde liegende Aufgabe schneller zu lösen, sprich das entsprechende Programm schneller abzuarbeiten.
Dabei kann der Prozessor über mehrere Ausführungseinheiten, beispielsweise Prozessorkerne, verfügen. Der Prozessor muss dabei nicht zwangsweise über mehrere physikalische Ausführungseinheiten verfügen. Der Prozessor kann auch dazu ausgeführt sein Multi-Threading durchzuführen. Es kann sich beim Prozessor um eine zentrale Verarbeitungseinheit, besser bekannt als central processing unit (CPU), einen Grafikprozessor, besser bekannt als graphics processing unit (GPU), oder ein sonstiges dediziertes programmierbares Rechenwerk, beispielsweise integriert auf einem System- on-a-Chip (SoC), handeln.
Zum Ermitteln der parallel ausführbaren Funktionsblöcke prüft der Compiler die Abhängigkeiten der einzelnen Funktionsblöcke im Datenflussgraph untereinander. Ein Funktionsblock verfügt typischerweise über eine Eingangsschnittstelle und eine Ausgangsschnittstelle. Über die Eingangsschnittstelle werden dem Funktionsblock erforderliche Daten bereitgestellt und über die Ausgangsschnittstelle das vom jeweiligen Funktionsblock erzeugte Ergebnis bereitgestellt. Erfordert ein Funktionsblock ein bestimmtes Ergebnis von einem anderen Funktionsblock bzw. übergibt der Funktionsblock sein berechnetes Ergebnis an einen weiteren Funktionsblock, so können diese Funktionsblöcke nicht parallel ausgeführt werden. Weisen jedoch zwei Funktionsblöcke keinerlei Abhängigkeiten bezüglich ihrer jeweiligen Eingangs- und Ausgangsdaten auf, so können diese generell parallel ausgeführt werden.
Eine besonders effiziente Anwendung des erfindungsgemäßen Verfahrens ist dann möglich, wenn bei Schleifen enthalten Funktionsblöcken, diese Funktionsblöcke bzw. die respektiven Schleifen die gleiche Tiefe und besonders bevorzugt die gleiche obere Schranke aufweisen.
Eine vorteilhafte Weiterbildung des Verfahrens sieht vor, dass der Compiler für die parallel ausführbaren Funktionsblöcke jeweils die Anzahl der vom Prozessor abzuarbeitenden Instruktionen ermittelt und für eine jeweilige Gruppe parallel ausführbarer Funktionsblöcke für solche Funktionsblöcke die weniger Instruktionen enthalten als der Funktionsblock mit der maximalen Instruktionsanzahl der jeweiligen Gruppe, Platzhalterinstruktionen in die respektiven Funktionsblöcke einbaut, sodass alle Funktionsblöcke einer jeweiligen Gruppe dieselbe Anzahl an Instruktionen enthalten. Enthalten die Funktionsblöcke einer Gruppe parallel ausführbarer Funktionsblöcke die gleiche Anzahl an durch den Prozessor auszuführenden Instruktionen, so ist eine besonders einfache und effiziente Zuweisung
gemäß Single-Instruction-Multiple-Data der Programmcodeteile zu derselben Ausführungseinheit des Prozessors möglich. Mit Instruktionen ist in diesem Zusammenhang das Vorhandensein derselben Instruktion in allen Funktionsblöcken der Gruppe parallel ausführbarer Funktionsblöcke gemeint. Beispielsweise kann es sich bei dieser Instruktion um den Befehl „Addieren“ oder „Multiplizieren“ handeln. Weichen einzelne Programmcodeteile von dieser Instruktion ab oder fehlen, beispielsweise wenn anstelle von „Addieren“ die Instruktion „Multiplizieren“ verwendet wird oder eine Befehlszeile gänzlich fehlt, so gilt es an entsprechender Stelle in den jeweiligen Funktionalitätsblock eine Platzhalterinstruktion einzuführen, um die Zuweisung der Programmcodeteile gemäß Single-Instruction-Multiple-Data durchführen zu können.
Eine weitere vorteilhafte Ausgestaltung des erfindungsgemäßen Verfahrens sieht ferner vor, dass wenn die von den Funktionsblöcken einer Gruppe parallel ausführbarer Funktionsblöcke enthaltenen Programmcodeteile Schleifen umfassen:
- der Compiler eine jeweilige Iterationsanzahl der Schleifen ermittelt;
- der Compiler überprüft, ob die Schleifen der Funktionsblöcke die die gemäß Single- Instruction-Multiple-Data derselben Ausführungseinheit des Prozessors zuweisbaren Programmcodeteile enthalten, eine unterschiedliche Iterationsanzahl umfassen; und wenn dies der Fall ist:
- der Compiler bewirkt, dass respektive Programmcodeteile der Funktionsblöcke entsprechend der niedrigsten Iterationsanzahl gleichzeitig durch dieselbe Ausführungseinheit des Prozessors abgearbeitet werden und diejenigen Programmcodeteile der Funktionsblöcke mit einer höheren Iterationsanzahl entsprechend der verbleibenden Iterationen sequentiell durch den Prozessor abgearbeitet werden.
Eine besonders einfache und effiziente Durchführung des erfindungsgemäßen Verfahrens ist möglich, wenn die gemäß Single-Instruction-Multiple-Data derselben Ausführungseinheit des Prozessors zuzuweisenden Programmcodeteile lediglich aus einer gleichartigen Instruktion bestehen. Die entsprechenden Programmcodeteile der Funktionsblöcke können jedoch auch Schleifen enthalten. Weisen dabei mehrere Funktionsblöcke eine unterschiedliche Iterationsanzahl der entsprechenden Schleifen auf, so lassen sich nur diejenigen Programmcodeteile gemäß Single-Instruction-Multiple-Data parallelisieren, bei denen es sich um die gleichen Instruktionen in den Funktionsblöcken der Gruppe parallel ausführbarer Funktionsblöcke handelt, entsprechend der
Iterationsanzahl der Schleife mit der niedrigsten Iterationsanzahl. Mit anderen Worten stehen dann für die Programmcodeteile des Funktionsblocks mit der höheren Iterationsanzahl keine entsprechenden Instruktionen aus dem übrigen Funktionsblock zum gleichzeitigen Aufteilen auf die Ausführungseinheit des Prozessors mehr zur Verfügung. Der entsprechende Überschuss wird dann sequentiell durch den Prozessor abgearbeitet.
Bevorzugt werden bei einem zu Multi-Threading fähigen Prozessor wenigstens zwei unterschiedliche Aufgaben parallel auf wenigstens zwei unterschiedlichen Ausführungseinheiten des Prozessors abgearbeitet. Hierdurch lässt sich der Parallelisierungsgrad noch weiter steigern. Dabei ist es auch denkbar, dass das erfindungsgemäße Verfahren zum Zuweisen der Programmcodeteile gemäß Single- Instruction-Multiple-Data für jede Aufgabe auf jeder Ausführungseinheit des Prozessors individuell angewendet wird. Es können also gleichzeitig mehrere Aufgaben auf mehreren Ausführungseinheiten abgearbeitet werden und dabei eine Parallelisierung gemäß des erfindungsgemäßen Verfahrens auf jeder einzelnen Ausführungseinheit stattfinden.
Erfindungsgemäß ist ein informationstechnisches System zur Ausführung eines im vorigen beschriebenen Verfahrens eingerichtet. Bei dem informationstechnischen System kann es sich um eine bekannte Rechenvorrichtung wie einen PC, ein eingebettetes System, ein SoC oder dergleichen handeln. Insbesondere im Zusammenhang von eingebetteten Systemen lässt sich das erfindungsgemäße Verfahren besonders gewinnbringend einsetzen, da hier vergleichsweise schwache Hardwarekomponenten verbaut sind, was es erforderlich macht, andere Maßnahmen zum Steigern der Recheneffizienz zu nutzen.
Ein solches informationstechnisches System ist besonders bevorzugt in ein erfindungsgemäßes Fahrzeug integriert. Bei dem Fahrzeug kann es sich um ein beliebiges Fahrzeug wie einen Pkw, Lkw, Transporter, Bus oder dergleichen handeln. Das informationstechnische System kann dabei einen zentralen Bordcomputer, ein Steuergerät eines Fahrzeuguntersystems oder dergleichen ausbilden. Es können auch mehrere solcher informationstechnischer Systeme in das Fahrzeug integriert sein. Wie bereits eingangs erwähnt sind der Integration leistungsfähiger Rechenkomponenten in Fahrzeuge Grenzen gesetzt. Durch Anwendung des erfindungsgemäßen Verfahrens und Integration eines solchen erfindungsgemäßen informationstechnischen Systems lässt sich
die Recheneffizienz und damit Leistungsfähigkeit der verbauten Rechenvorrichtungen im Fahrzeug steigern und dabei vorhandener Bauraum platzsparend ausnutzen und die kostengünstige Herstellung des Fahrzeugs sicherstellen.
Weitere vorteilhafte Ausgestaltungen des erfindungsgemäßen Verfahrens zum Betrieb des informationstechnischen Systems ergeben sich auch aus den Ausführungsbeispielen, welche nachfolgend unter Bezugnahme auf die Figuren näher beschrieben werden.
Dabei zeigen:
Fig. 1 eine Darstellung eines in einzelne Funktionsblöcke unterteilten Programmcodes als Datenflussgraph; und
Fig. 2 Pseudocode der in Fig. 1 dargestellten Funktionsblöcke C und D und eine Zuweisung vom Pseudocode enthaltener Instruktionen derselben Ausführungseinheit eines Prozessors gemäß eines erfindungsgemäßen Verfahrens.
Figur 1 zeigt in einer abstrahierten Darstellung als Datenflussgraph 3 einen zum Lösen einer oder mehrerer Aufgaben 1.1 , 1.2 auf einem informationstechnischen System ausgeführten Programmcode, unterteilt in einzelne Funktionsblöcke 2. Ein Funktionsblock 2 entspricht dabei einem losgelöst berechenbaren Teilproblem der jeweiligen Aufgabe
1.1 , 1.2. Der Prozessor des informationstechnischen Systems kann zur Ausführung von Multi-Threading eingerichtet sein, was das parallele Abarbeiten mehrerer Aufgaben 1.1,
1.2, also mehrerer Ausführungsstränge, erlaubt. Die Ausführungsstränge können dieselbe oder eine abweichende Ausführungsfrequenz aufweisen. Dabei wird jede Aufgabe 1.1, 1.2 einer individuellen Ausführungseinheit des Prozessors, also beispielsweise separaten Rechenkernen, zugeteilt. Dies stellt eine erste Möglichkeit zur Parallelisierung von Programmen dar. Zur Wahrung der Übersichtlichkeit sind in den Figuren nur einige der jeweils gleichartigen Referenzobjekte mit Bezugszeichen versehen.
Die einzelnen Funktionsblöcke 2 verfügen über Eingangsschnittstellen 2.E zum Einlesen von Eingangsdaten und über Ausgangsschnittstellen 2.A zum Ausgeben von Berechnungsergebnissen. Unter Berücksichtigung entsprechender Datenabhängigkeiten lässt sich eine Ausführungsreihenfolge der Funktionsblöcke 2 ableiten. In einem aus dem Stand der Technik bekannten informationstechnischen System werden die einzelnen Funktionsblöcke 2 der jeweiligen Aufgaben 1.1 und 1.2 jeweils sequentiell hintereinander
ausgeführt. Hierdurch wird jedoch Rechenkapazität verschwendet, da generell auch einzelne Funktionsblöcke 2 bzw. von den jeweiligen Funktionsblöcken 2 enthaltene Programmcodeteile auch parallel ausgeführt werden könnten.
Zur weiteren Erhöhung der Recheneffizienz dient ein erfindungsgemäßes Verfahren, welches es erlaubt die in den einzelnen Funktionsblöcken 2 enthaltenen, in Figur 2 näher dargestellte Instruktionen 5 so auf den Prozessor zu verteilen, dass Teile einer einzigen Aufgabe 1.1 ebenfalls parallelisiert werden können. Das erfindungsgemäße Verfahren sieht dabei vor, dass gleichartige Instruktionen 5 aus parallel ausführbaren Funktionsblöcken 2 derselben Ausführungseinheit des Prozessors gemäß Single- Instruction-Multiple-Data (SIMD) zugewiesen werden. Es wird also in einem Rechentakt dieselbe Instruktion auf die unterschiedlichen Registerbereiche jeweils des gleichen Registers angewendet. „Gleichartig“ meint in diesem Zusammenhang also denselben Typ von Instruktion, also zum Beispiel, dass die zu parallelisierenden Codezeilen alle den Befehl „Addieren“ umfassen, was eine grundlegende Voraussetzung für SIMD ist.
Das erfindungsgemäße Verfahren sieht hierzu vor, dass ein entsprechender Compiler den in Figur 1 gezeigten Datenflussgraph 3 analysiert und dabei besagte Ausführungsreihenfolge der jeweiligen Funktionsblöcke 2 ermittelt. Funktionsblöcke 2 können parallel ausgeführt werden, wenn keine Abhängigkeiten zwischen den über die Eingangsschnittstellen 2.E und Ausgangsschnittstellen 2.A ausgetauschte Daten existieren. Dies ist in Figur 1 beispielsweise für die Funktionsblöcke C und D sowie C und B der Fall. Ferner können auch die Funktionsblöcke A und H parallelisiert werden. Eine Parallelisierung für die Funktionsblöcke E und F sowie für die Aufgabe 1.2 für die Funktionsblöcke M, N, O und Q ist aufgrund der Abhängigkeiten nicht möglich.
Im Folgenden wird von einer parallelen Ausführbarkeit der Funktionsblöcke C und D ausgegangen, welche dann eine in Figur 2 gezeigte Gruppe 4 parallel ausführbarer Funktionsblöcke 2 ausbilden. Je nach Komplexität des Programmcodes könnte eine solche Gruppe 4 auch drei, vier oder noch mehr parallel ausführbarer Funktionsblöcke 2 enthalten.
Figur 2 zeigt dabei abstrahiert als Pseudocode die von den Funktionsblöcken C und D umfassten Programmcodeteile. Je nach Ausführung des informationstechnischen
Systems und des zu bearbeitenden Problems kommt zur Umsetzung des erfindungsgemäßen Verfahrens generell jede erdenkliche Programmiersprache in Frage.
Der Befehl „Mov“ beschreibt das Verschieben eines Datums von einem Register in ein anderes bzw. von einem Speicher in ein Register. Entsprechend wird dem Register rO die Zahl 42 bzw. 30 zugeordnet.
„:Loop“ beschreibt den Anfang einer Schleife und „Bnz loop“ beschreibt das Ende einer Schleife, wobei als Prämisse gilt, dass rO = 0 erreicht wurde.
Bei den Befehlen „Mov“ und „Add“ handelt es sich um durch den Prozessor des informationstechnischen Systems auszuführende Instruktionen 5. Anstelle einer Addition könnte auch eine Multiplikation oder dergleichen angefordert werden. Der Befehl „Add r1, [r2], + rO“ beschreibt beispielsweise das dem Register r1 die Summe aus dem Inhalt des Registers r2 plus den Wert von rO zugeordnet wird. Die im Funktionsblock C gezeigte Schleife zählt dabei von 42 rückwärts bis 0. Das Rückwärtszählen wird dabei durch die Codezeile „Add rO, rO, -1“ umgesetzt.
Die beiden Codezeilen „Add r1 , [r2], + rO“ aus Funktionsblock C und „Add r1 , [r2], 0“ des Funktionsblocks D entsprechen derselben Instruktion 5 für den Prozessor und greifen auf dieselben Registerbereiche zu. Somit eignen sie sich zur Anwendung der erfindungsgemäßen Zuweisung der Instruktionen 5 zur selben Ausführungseinheit des Prozessors des informationstechnischen Systems gemäß Single-Instruction-Multiple-Data gemäß des erfindungsgemäßen Verfahrens.
Die in den Funktionsblöcken C und D enthaltenen Schleifen weisen jedoch eine unterschiedliche Iterationsanzahl und eine unterschiedliche Anzahl an Instruktionen 5 auf. Um diesem Sachverhalt gerecht zu werden wird zuerst in den Funktionsblock C eine sogenannte Platzhalterinstruktion 6 eingefügt. Die Funktionsblöcke C und D weisen dann dieselbe Anzahl an Instruktionen 5 auf. Beispielhaft sie die Bezeichnung „nop“ als Platzhalterinstruktion 6 verwendet und bewirkt, dass der Prozessor beim Einlesen der Platzhalterinstruktion 6 keine Rechenoperation durchführt.
Da sich die Iterationsanzahl der Schleifen der Funktionsblöcke C und D unterscheidet, werden zuerst Programmcodeteile des Funktionsblocks C sequentiell auf dem Prozessor
ausgeführt, gefolgt von einer parallelen Ausführung der Programmcodeteile der Funktionsblöcke C und D. So verfügt die Schleife des Funktionsblocks C über 42 Iterationen und die Schleife des Funktionsblocks D über 30 Iterationen. Somit wird die Schleife des Funktionsblocks C zuerst 12mal sequentiell ausgeführt, bevor dann der Programmcode der Funktionsblöcke C und D 30mal gemeinsam auf derselben Ausführungseinheit des Prozessors ausgeführt wird. Je nach Ausgestaltung des Programmcodes und der zu Grunde liegenden Programmiersprache könnte auch zuerst die parallele Ausführung erfolgen gefolgt von der sequentiellen Ausführung.
Der in Figur 2 durch eine gestrichelte Box gekennzeichnete Programmcode „Add r1a, [r2a], 0 & r1b, [r2b], +r0“ beschreibt dabei den Teil des parallelisierten Programmcodes der für den eigentlichen Recheneffizienzgewinn führt. Zudem muss auch der Teil „Add rO, rO, -1“ weniger oft ausgeführt werden, nämlich 12mal in der sequentiellen Schleife und 30mal in der parallelisierten Schleife (also insgesamt 42mal), anstelle von 42mal sequentiell und 30mal sequentiell (also insgesamt 72mal) gemäß dem Stand der Technik.
Das Register r1 und das Register r2 sind dabei jeweils unterteilt in einen Registerbereich a und einen Registerbereich b. Der Programmcode sieht also vor, dass gemäß des Funktionsblocks C auf die Registerbereiche b des ersten und zweiten Registers zugegriffen wird und gemäß des Programmcodes des Funktionsblocks D auf die Registerbereiche a des ersten und zweiten Registers zugegriffen wird.
Claims
Patentansprüche Verfahren zum Betrieb eines informationstechnischen Systems, wobei zum Abarbeiten wenigstens einer Aufgabe (1.1, 1.2) durch einen Prozessor nutzbarer Programmcode in einem Kompilierungsschritt durch einen Compiler in wenigstens zwei Funktionsblöcke (2) unterteilt und diese in einem Datenflussgraph (3) angeordnet werden und der Compiler den Datenflussgraph (3) zum Ermitteln einer Ausführungsreihenfolge der jeweiligen Funktionsblöcke (2) durch den Prozessor analysiert, dadurch gekennzeichnet, dass der Compiler durch den Prozessor beim Abarbeiten der zumindest einen Aufgabe (1.1, 1.2) parallel ausführbare Funktionsblöcke (2) ermittelt, für jede Gruppe (4) parallel ausführbarer Funktionsblöcke (2) prüft, ob zumindest Programmcodeteile von wenigstens zwei Funktionsblöcken (2) die Ausführung derselben Instruktion (5) durch den Prozessor erfordern und diese Programmcodeteile gemäß Single- Instruction-Multiple-Data derselben Ausführungseinheit des Prozessors zur gleichzeitigen Abarbeitung zuweist. Verfahren nach Anspruch 1 , dadurch gekennzeichnet, dass der Compiler für die parallel ausführbaren Funktionsblöcke (2) jeweils die Anzahl der vom Prozessor abzuarbeitenden Instruktionen (5) ermittelt und für eine jeweilige Gruppe (4) parallel ausführbarer Funktionsblöcke (2) für solche Funktionsblöcke (C) die weniger Instruktionen (5) enthalten als der Funktionsblock (D) mit der maximalen Instruktionsanzahl der jeweiligen Gruppe (4), Platzhalterinstruktionen (6) in die respektiven Funktionsblöcke (C) einbaut, sodass alle Funktionsblöcke (2) einer jeweiligen Gruppe (4) dieselbe Anzahl an Instruktionen (5) enthalten. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass
wenn die von den Funktionsblöcken (2) einer Gruppe (4) parallel ausführbarer Funktionsblöcke (2) enthaltenen Programmcodeteile Schleifen umfassen:
- der Compiler eine jeweilige Iterationsanzahl der Schleifen ermittelt;
- der Compiler überprüft, ob die Schleifen der Funktionsblöcke (2) die die gemäß Single-Instruction-Multiple-Data derselben Ausführungseinheit des Prozessors zuweisbaren Programmcodeteile enthalten, eine unterschiedliche Iterationsanzahl umfassen; und wenn dies der Fall ist:
- der Compiler bewirkt, dass respektive Programmcodeteile der Funktionsblöcke (C, D) entsprechend der niedrigsten Iterationsanzahl gleichzeitig durch dieselbe Ausführungseinheit des Prozessors abgearbeitet werden und diejenigen Programmcodeteile der Funktionsblöcke (C) mit einer höheren Iterationsanzahl entsprechend der verbleibenden Iterationen sequentiell durch den Prozessor abgearbeitet werden. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass bei einem zu Multi-Threading fähigen Prozessor wenigstens zwei unterschiedliche Aufgaben (1.1, 1.2) parallel auf wenigstens zwei unterschiedlichen Ausführungseinheiten des Prozessors abgearbeitet werden. Informationstechnisches System, gekennzeichnet durch eine Einrichtung zur Ausführung eines Verfahrens nach einem der Ansprüche 1 bis 4. Fahrzeug, gekennzeichnet durch ein informationstechnisches System nach Anspruch 5.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP23798436.4A EP4457611A1 (de) | 2022-11-21 | 2023-10-26 | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102022004347.5 | 2022-11-21 | ||
DE102022004347.5A DE102022004347A1 (de) | 2022-11-21 | 2022-11-21 | Verfahren zum Betrieb eines informationstechnischen Systems, informationstechnisches System und Fahrzeug |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024110148A1 true WO2024110148A1 (de) | 2024-05-30 |
Family
ID=88600432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2023/080001 WO2024110148A1 (de) | 2022-11-21 | 2023-10-26 | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4457611A1 (de) |
DE (1) | DE102022004347A1 (de) |
WO (1) | WO2024110148A1 (de) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007113369A1 (en) | 2006-03-30 | 2007-10-11 | Atostek Oy | Parallel program generation method |
-
2022
- 2022-11-21 DE DE102022004347.5A patent/DE102022004347A1/de active Pending
-
2023
- 2023-10-26 WO PCT/EP2023/080001 patent/WO2024110148A1/de active Application Filing
- 2023-10-26 EP EP23798436.4A patent/EP4457611A1/de active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007113369A1 (en) | 2006-03-30 | 2007-10-11 | Atostek Oy | Parallel program generation method |
Non-Patent Citations (4)
Title |
---|
ANONYMOUS: "Chapter 21. x86 Architecture", 10 August 2022 (2022-08-10), pages 1 - 2, XP093117196, Retrieved from the Internet <URL:https://web.archive.org/web/20220810012138/https://www.tortall.net/projects/yasm/manual/html/arch-x86.html> [retrieved on 20240109] * |
ANONYMOUS: "Data-flow analysis - Wikipedia", 25 September 2022 (2022-09-25), pages 1 - 9, XP093117082, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Data-flow_analysis&oldid=1112320718> [retrieved on 20240109] * |
D. NUZMAN ET AL.: "Vapor SIMD: Auto-vectorize once, run everywhere", INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION (CGO 2011), 2011, pages 151 - 160, XP031863941, DOI: 10.1109/CGO.2011.5764683 |
DAVID F BACON ET AL: "Compiler transformations for high-performance computing", ACM COMPUTING SURVEYS, ACM, NEW YORK, NY, US, US, vol. 26, no. 4, 1 December 1994 (1994-12-01), pages 345 - 420, XP058221666, ISSN: 0360-0300, DOI: 10.1145/197405.197406 * |
Also Published As
Publication number | Publication date |
---|---|
DE102022004347A1 (de) | 2024-05-23 |
EP4457611A1 (de) | 2024-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE3586374T2 (de) | Verfahren zur elimination globaler gemeinsamer unterexpressionen und zur kodeverschiebung in einem optimierenden kompilierer. | |
DE112010003595B4 (de) | Verfahren, Systeme und maschinenverarbeitbares Medium zur Bereitstellung einer verteiltenPrädikatvorhersage | |
DE102013017982A1 (de) | COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen | |
DE102018100730A1 (de) | Ausführung von Berechnungsgraphen | |
DE3750951T2 (de) | Verfahren zur Kodeerzeugung für Rechner mit beschränktem Befehlssatz. | |
EP3568757B1 (de) | Verfahren zur erzeugung von quellcode | |
EP0825540B1 (de) | Prozessor mit Pipelining-Aufbau | |
EP2799983A1 (de) | Flexible Aufteilung der I/O Kanäle einer Hardware Komponente | |
DE102016223939A1 (de) | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung | |
DE4430195B4 (de) | Verfahren zur Auswertung von Booleschen Ausdrücken | |
DE102009027627B3 (de) | Simulation von Echtzeit-Software-Komponenten auf Basis der Logischen Ausführungszeit | |
DE102016202305A1 (de) | Verfahren und Vorrichtung zum Betreiben eines Steuergeräts | |
WO2024110148A1 (de) | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug | |
DE102016204970A1 (de) | Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung | |
DE102016108081A1 (de) | Mikroprozessor mit Zusatz-Befehlen für Binärsuche und zugehöriges Suchverfahren | |
WO2011120814A1 (de) | Geteilte zentrale verarbeitung von daten | |
WO2003017095A2 (de) | Verfahren zum übersetzen von programmen für rekonfigurierbare architekturen | |
DE102016219449A1 (de) | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung | |
DE102016201614A1 (de) | Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung | |
DE102015213300A1 (de) | Verfahren und Vorrichtung zur Erzeugung einer Geräte-spezifischen Kennung und Geräte umfassend einen personalisierten programmierbaren Schaltungsbaustein | |
DE102017220181A1 (de) | Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung | |
WO2009068014A2 (de) | Über datenverarbeitung | |
WO2002006950A2 (de) | Verfahren zum automatischen gewinnen einer funktionsfähigen reihenfolge von prozessen und werkzeug hierzu |
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: 23798436 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2023798436 Country of ref document: EP |
|
ENP | Entry into the national phase |
Ref document number: 2023798436 Country of ref document: EP Effective date: 20240802 |