EP4457611A1 - Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug - Google Patents
Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeugInfo
- Publication number
- EP4457611A1 EP4457611A1 EP23798436.4A EP23798436A EP4457611A1 EP 4457611 A1 EP4457611 A1 EP 4457611A1 EP 23798436 A EP23798436 A EP 23798436A EP 4457611 A1 EP4457611 A1 EP 4457611A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- function blocks
- processor
- program code
- compiler
- information technology
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/456—Parallelism detection
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
Description
Claims
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE102022004347.5A DE102022004347A1 (de) | 2022-11-21 | 2022-11-21 | Verfahren zum Betrieb eines informationstechnischen Systems, informationstechnisches System und Fahrzeug |
| PCT/EP2023/080001 WO2024110148A1 (de) | 2022-11-21 | 2023-10-26 | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| EP4457611A1 true EP4457611A1 (de) | 2024-11-06 |
Family
ID=88600432
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| EP23798436.4A Pending EP4457611A1 (de) | 2022-11-21 | 2023-10-26 | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug |
Country Status (6)
| Country | Link |
|---|---|
| EP (1) | EP4457611A1 (de) |
| JP (1) | JP2025536741A (de) |
| KR (1) | KR20250073453A (de) |
| CN (1) | CN120153349A (de) |
| DE (1) | DE102022004347A1 (de) |
| WO (1) | WO2024110148A1 (de) |
Family Cites Families (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 CN CN202380077621.7A patent/CN120153349A/zh active Pending
- 2023-10-26 JP JP2025529174A patent/JP2025536741A/ja active Pending
- 2023-10-26 WO PCT/EP2023/080001 patent/WO2024110148A1/de not_active Ceased
- 2023-10-26 KR KR1020257013903A patent/KR20250073453A/ko active Pending
- 2023-10-26 EP EP23798436.4A patent/EP4457611A1/de active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| JP2025536741A (ja) | 2025-11-07 |
| CN120153349A (zh) | 2025-06-13 |
| KR20250073453A (ko) | 2025-05-27 |
| DE102022004347A1 (de) | 2024-05-23 |
| WO2024110148A1 (de) | 2024-05-30 |
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. | |
| DE102018100730A1 (de) | Ausführung von Berechnungsgraphen | |
| DE102013017982A1 (de) | COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen | |
| DE3750951T2 (de) | Verfahren zur Kodeerzeugung für Rechner mit beschränktem Befehlssatz. | |
| EP0825540B1 (de) | Prozessor mit Pipelining-Aufbau | |
| EP3568757B1 (de) | Verfahren zur erzeugung von quellcode | |
| EP2799983A1 (de) | Flexible Aufteilung der I/O Kanäle einer Hardware Komponente | |
| DE4430195B4 (de) | Verfahren zur Auswertung von Booleschen Ausdrücken | |
| DE102016223939A1 (de) | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung | |
| DE102016204970A1 (de) | Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung | |
| EP4457611A1 (de) | Verfahren zum betrieb eines informationstechnischen systems, informationstechnisches system und fahrzeug | |
| EP4148557B1 (de) | Verfahren zur erzeugung von quellcode | |
| DE102016108081A1 (de) | Mikroprozessor mit Zusatz-Befehlen für Binärsuche und zugehöriges Suchverfahren | |
| WO2011120814A1 (de) | Geteilte zentrale verarbeitung von daten | |
| DE102016201614B4 (de) | Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Steuervorrichtung | |
| DE102022202335A1 (de) | Computerimplementiertes verfahren zur speicheroptimierung eines partitionierten systems | |
| DE102016219449A1 (de) | Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung | |
| DE102016216298A1 (de) | Parallelisierungsverfahren, parallelisierungstool und an einem fahrzeug befestigte vorrichtung | |
| DE102015213300A1 (de) | Verfahren und Vorrichtung zur Erzeugung einer Geräte-spezifischen Kennung und Geräte umfassend einen personalisierten programmierbaren Schaltungsbaustein | |
| DE102020108131A1 (de) | Verfahren zum Einführen von Redundanz, insbesondere für eine Sicherheitsprüfung von Instruktionen eines Programmcodes, zum Zeitpunkt des Kompilierens | |
| EP2217999A2 (de) | Compiler für rekonfigurierbare architekturen mit besonderem zwischenformat | |
| DE102018127732A1 (de) | Binden von Konstanten bei Laufzeit zur verbesserten Ressourcennutzung | |
| DE102017220181A1 (de) | Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: UNKNOWN |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE |
|
| PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE |
|
| 17P | Request for examination filed |
Effective date: 20240802 |
|
| AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR |
|
| STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: EXAMINATION IS IN PROGRESS |
|
| 17Q | First examination report despatched |
Effective date: 20250722 |
|
| DAV | Request for validation of the european patent (deleted) | ||
| DAX | Request for extension of the european patent (deleted) |