US10372445B2 - Method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software - Google Patents
Method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software Download PDFInfo
- Publication number
- US10372445B2 US10372445B2 US15/790,320 US201715790320A US10372445B2 US 10372445 B2 US10372445 B2 US 10372445B2 US 201715790320 A US201715790320 A US 201715790320A US 10372445 B2 US10372445 B2 US 10372445B2
- Authority
- US
- United States
- Prior art keywords
- writer
- communication
- reader
- runnable
- control software
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0421—Multiprocessor system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Definitions
- the present disclosure relates to an SC to MC porting method for control software, i.e. a method for porting an existing vehicle control software developed for a single-core control device (SC software, or SC control software) into a modified control software that can be executed on a multi-core control device (MC software, or MC control software).
- SC software single-core control device
- MC software multi-core control device
- the present disclosure furthermore relates to a conversion method for creating a modified control software that can be executed on a multi-core control device (optimized MC-Software) from an existing vehicle control-software, which was already designed for a multi-core control device (existing MC-Software).
- SC is used to express a reference to a control software or the execution thereof on a single-core control device.
- MC refers to a control software or the execution thereof in the initial state or in the ported state on a multi-core control device.
- An aspect that facilitates the parallelization of runnables and thus porting of SC-software into MC-software is the detection of strong and weak precedence constraints among runnables in the existing control software, which exchange information through persistent memory variables.
- runnables may access a persistent memory variable as writers and readers for performing information exchange. These runnables are repeatedly executed (as instances) and perform in each execution substantially the same write- or read-access to the persistent memory variable. Execution of the runnables is executed as a rule at pre-defined periodicities, e.g. every 1, 3, 5 or 10 milliseconds. The periodicities frequently vary for a writer-runnable and a reader-runnable.
- DE 10 2014 103 139 A1 illustrates several rules, according to which a precedence-constraint may be classified as weak or strong.
- weak precedence-constraints can be broken up and replaced by co-ordination of the runnables (setting equal ranks to the runnables) within the MC-software.
- the co-ordination may lead to time-parallel execution of the instances of the writer-runnable and the reader-runnable.
- Information exchange among parallelized runnables is then performed through time-implicit communication.
- the persistent memory variable is stored in a separately administrated database, which facilitates writing and reading access free of waiting time.
- the precedence-constraints in the existing control software ascertain that a write-procedure of a precedent writer-runnable is performed temporally before the read-procedure of a subordinate reader-runnable. This ensures, that for an information transfer among temporally concurring runnables the write-access to the persistent memory variable will be performed temporally separated and prior to a read-access. When those runnables are parallelized, the sequential access to the persistent memory variable cannot be ensured any more. With time implicit communication the temporal relation of access to the persistent memory variable is redesigned. The exchange of current communication data (i.e.
- a waiting time free access to a separately stored persistent memory variable may be facilitated in that a main memory value and a buffer memory value are set up for each memory variable, wherein the buffer memory value is accessible for reading while a write-access is performed on the main memory value.
- a reader-runnable which is executed on a first computational core, may perform a read-access to the latest (older) value in the buffer memory value, while simultaneously a parallelized executed writer-runnable writes a new data value into the main memory value.
- the advantages of the generated MC-software may lie in a more efficient use of resources through parallel execution, in efficient use of memory and/or in optimization of the communication performance and/or overall performance.
- the method includes: analysis of the existing control software regarding a writer-to-reader cardinality of the information exchange with respect to a communication variable; defining an implementation of the time implicit communication as a function of the determined writer-to-reader cardinality, wherein in particular in case of a 1-to-n cardinality a parallelized execution of a writer-runnable and at least one reader-runnable is established in the generated multi-core control software and the related communication variable is stored in a separate ring buffer, which is associated to the writer-runnable.
- a method for porting an existing vehicle control software developed for a single-core control device into a modified multi-core control software that can be executed on a multi-core control device, or for converting an existing vehicle control software, which is already developed for a multi core control device, into an optimized multi-core control software is provided.
- the existing control software comprises numerous repeatedly executable runnables. Information is exchanged between the runnables through writing and reading of communication variables. A modified information exchange via time implicit communication is provided for parallelized runnables in the multi-core control software that is generated by the method. Time implicit communication is implemented by storing values of a communication variable are stored together with an associated time rank in a buffer, in particular in a ring buffer.
- an MC software is generated that makes better use of the advantages of the parallelization.
- the advantages of the generated MC-software may lie in a more efficient use of resources through parallel execution, in efficient use of memory and/or in optimization of the communication performance and/or overall performance.
- FIG. 1A and FIG. 1B are diagrams showing comparison illustrations of an SC control software, a modified structure for the information transfer in a ported MC control software, and an execution plan for the MC control software when a 1-to-1 cardinality is present;
- FIG. 2 is a diagram showing an enlarged illustrations of the MC control software according to FIG. 1B , wherein values of the communication variables are stored in ring buffers, and read out in a cyclical communication scheme:
- FIG. 3A and FIG. 3B are diagrams showing depictions analogous to FIG. 1A and FIG. 1B for an information exchange in case of a 1-to-n cardinality;
- FIG. 4 is a diagram showing depiction analogous to FIG. 2 for an information exchange in case of a 1-to-n cardinality
- FIG. 5A and FIG. 5B are diagrams showing depictions analogous to FIG. 1A and FIG. 1B for an information exchange in case of an m-to-1 cardinality;
- FIG. 6 is a diagram showing depiction analogous to FIG. 1A , FIG. 1B and FIG. 2 for an information exchange in case of an m-to-1 cardinality.
- FIG. 1A In the upper parts of FIG. 1A , FIG. 3A and FIG. 5A , different examples of an information exchange between runnables (A, B, C/A, B, D/A, E, F) are depicted.
- SC software SC control software
- a first runnable (A) writes a first communication variable (X).
- a second runnable (B) reads the first communication variable (X). Otherwise, none of the runnables have access to this communication variable (X). Accordingly, there is a 1-to-1 cardinality (cX: 1-1) between the first and the second runnable (A, B).
- cX represents cardinality of information exchange for first communication variable.
- the second runnable (B) writes a second communication variable (Y), which is read by a third runnable (C). Otherwise, none of the other runnables have access to the second communication variable (Y). Accordingly, there is a 1-to-1 cardinality (cY: 1-1) for the communication variable (Y) for the information transfer.
- cY 1-to-1 cardinality
- FIG. 1A an unbranched information transfer is defined for the communication variables (X, Y).
- cY represents cardinality of information exchange for second communication variable.
- FIG. 3A and FIG. 5A there are given two possibilities for a branched information transfer, which represent variations on the example of FIG. 1A .
- the person skilled in the art will recognize that in practice, arbitrary combinations of the forms of the information transfer discussed herein may exist.
- the features explained with respect to the three exemplary embodiments of FIG. 1A to FIG. 2 , FIG. 3A to FIG. 4 and FIG. 5A to FIG. 6 can be combined in an arbitrary manner.
- the reference symbols (X) and (Y) shall be used uniformly for the communication variables in the three exemplary embodiments.
- the person skilled in the art will recognize that in the exemplary embodiments, these can each be the same communication variables or different communication variables.
- a total of six runnables (A, B, C, D, E, F) are used to represent the possible forms of the information transfer. Insofar as the reference symbols of these runnables coincide in the exemplary embodiments, these can be the same or different runnables.
- a first runnable (A) writes into a first communication variable (X).
- This communication variable (X) is read by a second runnable (B) and likewise by a fourth runnable (D).
- the communication variable (X) there are thus exactly one writer runnable (A) and (at least) two reader runnables (B). Accordingly, a 1-to-n cardinality (cX: 1-n) is determined for the information transfer.
- Multiple reader runnables (B, D) share information that is made available by just one writer runnable (A).
- SC-SW control software
- cX, cY writer-to-reader cardinality
- X, Y communication variable
- a modified information exchange via time implicit communication is provided in the MC software (MC-SW) for parallelized runnables.
- the implementation of the time implicit communication can take place in any arbitrary manner. It is particularly preferred (potentially depending on the established cardinality) that a value of a communication variable (X, Y) is stored together with an assigned temporal rank in a ring buffer (MX, MY).
- the value in the ring buffer (MX, MY) that is to be used for a specific instance (B 0 , B 1 , . . . ), (C 0 , C 1 , . . . ) of a reader runnable (B, C) is determined on the basis of the temporal rank stored in the ring buffer.
- the respective most current temporal rank in the ring buffer (MX, MY) can be determined for each instance of a reader runnable. This shall be explained in detail below with reference to FIG. 1A to FIG. 3B .
- the runnables (A, B, C) are executed with different periodicities (PA, PB, PC) in the SC software (SC-SW) according to FIG. 1A .
- the first runnable (A) has a periodicity (PA) of 1 ms.
- a further instance (A 1 , A 2 , A 3 , etc.) of the first runnable (A) is executed.
- Each of these instances (A 0 , A 1 , A 2 , . . . ) writes a current value into the communication variable (X), which can be implemented in the SC execution, e.g. as a single field, or single memory cell.
- PB periodicity
- PC periodicity
- FIG. 1A an information transfer structure for the MC software is depicted, having the same runnables (A, B, C), using time implicit communication.
- the three runnables (A, B, C) are parallelized here, i.e. executed in a temporally overlapping, or fully simultaneous manner.
- the instances (B 1 , B 2 , B 3 , . . . ), (C 1 , C 2 , C 3 , . . . ) of the second and third runnables (B, C) are executed at a relatively earlier point in time with respect to the SC execution.
- the boxes formed by a broken line in the lower part of FIG. 1A indicate, for comparison purposes, the executing times of the instances of the runnables (B, C) in the SC execution, while the boxes illustrated with solid lines depict the execution times in the MC execution.
- time implicit communication is used.
- the time reference of an information to be used by the reader runnable (B, C) is redirected to a value of the respective communication variables (X, Y), which has already been written at an earlier point in time (solid line from A instance to B instance, or from B instance to C instance).
- the information transfer thus follows the path A 3 -X-B 1 .
- the instance (B 1 ) of the second runnable (B) is executed in parallel to the instance (A 3 ) of the first runnable (A). Accordingly, the value of the communication variable (X) written by the instance (A 3 ) is not yet (surely) available, when the instance (B 1 ) of the runnable (B) needs this value. For this reason, a value of the communication variable (X) is made available to the instance (B 1 ), which was written by the preceding instance (A 2 ) of the first runnable (A). The information transfer thus follows the redirected path A 2 -X-B 1 . There is therefore a structural change or extension of the information transfer. The same applies for the instances (B 2 to B 6 and C 3 ) of the reader runnables (B, C).
- TIC time implicit communication
- the worst case reaction time (WCRT) that can result in the structurally longest chain of effects is indicated in the upper diagram. It is assumed that a physical change (IN), to which the control software should react, takes place directly after the execution of the instance (A 2 ) of the first runnable (A). This physical change cannot be detected earlier than by the instance (A 3 ) of the first runnable (A), and converted to a corresponding value of the communication variable (X). The instance (B 1 ) reads and processes the modified value of the communication variable (X) and then writes a modified value of the second communication variable (Y).
- a physical change to which the control software should react
- the instance (C 1 ) of the third runnable (C) reads in the modified value of the second communication variable (Y) and generates a control command (OUT) as a function thereof, which embodies the reaction of the control software to the physical change, i.e. it creates the control result thereof.
- the longest possible processing path therefore follows the chain of effects: IN-A 2 -X-B 1 -Y-C 1 -OUT.
- the worst case reaction time WCRT is 3.3 ms in this example.
- the worst case reaction time (WCRT) resulting from the time implicit communication in another chain of effects by the instances is specifically: IN-A 11 -X-B 4 -Y-C 3 .
- the worst case reaction time WCRT is 4.1 ms here.
- a physical change takes place in the worst case directly after the end of the instance (A 10 ) of the first runnable (A). This is detected by the following instance (A 11 ), and transformed to a value of the first communication variable (X), which is processed by the following instance (B 4 ) of the second runnable (B). This instance (B 4 ) writes an updated value into the communication variable (Y), which is processed by the instance (C 3 ) of the third runnable (C), and converted to a control command (OUT).
- the MC software is executed with a modified execution time (a), which deviates from the real time (t).
- This execution time (a) is particularly preferably a cyclical execution is time.
- a base interval (Tb) having a specific duration is established and each execution cycle lasts as long as this base interval (Tb).
- the structural extension of the information transfer can be compensated for by accelerated execution.
- a worst case reaction time (WCRT′) of 2.8 ms is obtained in the MC execution, for example, which is actually shorter than the worst case reaction time of 3.3 ms in SC execution.
- FIG. 2 shows the MC software (MC-SW) from FIG. 1B in an enlarged depiction, and illustrates a particularly beneficial implementation of the information transfer with ring buffers (MX, MY) and writing accesses in a cyclical communication scheme for a 1-to-1 cardinality.
- MC-SW MC software
- a first ring buffer (MX) and a second ring buffer (MY) are provided in each case for storing the values of the respective communication variables (X, Y).
- Each instance of a writer runnable (A, B) stores a current value of the respective communication variable (X, Y), together with an associated temporal rank, in the ring buffer (MX, MY) provided for this communication variable (X, Y).
- numerous values of the communication variables (X, Y) are stored in each of the ring buffers.
- Each instance of a reader runnable (B, C) obtains access to that value in the ring buffer (MX, MY) that is the correct one at the point in time that the reader runnable (B, C) is executed. This can be that stored value in particular that has the most current temporal rank.
- a search algorithm can be executed on the ring buffer, in order to determine the correct, or most current, temporal rank, and to read out the assigned value.
- another search or identification strategy can be deposed for finding the “correct value.”
- Alternative strategies shall be explained below.
- the writings and readings applied to the communication variables (X, Y) or the ring buffer (MX, MY) can fundamentally take place in an arbitrary time scheme. It is advantageous, however, to use a communication scheme that is based on uniform communication cycles (K 1 , K 2 , . . . ) at least for the reading of communication variables (X, Y).
- a base interval (Tk) having a specific duration is established, and each communication cycle (K 1 , K 2 , . . . ) lasts as long as this base interval (Tk).
- Writing accesses to the ring buffers (MX, MY) can take place at an arbitrary time, in order to write the current value of a communication variable (X, Y) into a field of the ring buffer (MX, MY).
- a specific future communication cycle K 1 , K 2 , . . .
- the written value is not made available for a reading access before reaching the publication time (Pub).
- the cyclical communication requiring publication times prevents the occurrence of non-deterministic states.
- the path (potentially modified with respect to an SC execution) for the information transfer (through instances of the runnables in specific cycle sequences) can be defined in a fixed manner.
- the base interval (Tb, Tk) for the communication scheme (k) and the execution scheme (a) can preferably be identical. Accordingly, the duration of a communication cycle (K 1 , K 2 , . . . ) can be equal to that of an execution cycle. However, if applicable, a fixed time offset may be provided between a communication cycle and an execution cycle (not shown).
- identical cycle scales (a, k) are presently provided for the execution scheme and the communication scheme.
- the cycle scale (a) for the execution scheme is depicted in FIG. 2 , FIG. 4 and FIG. 6 at the upper edge.
- the cycle scale (k) for the communication scheme is depicted at the lower edge.
- Writings of a runnable (A, B) in a buffer memory (MX, MY) are depicted as either vertical arrows or as broken lines. The graphic distinction of these writings shall be explained further below.
- the determined communication pattern is maintained, despite the unexpected change to the execution.
- FIG. 3A shows in the upper region an SC software having a 1-to-n cardinality (cX: 1-n) of the information transfer.
- the communication variable (X) is only written by the first runnable (A), but it is read in by the second and fourth runnables (B, D).
- FIG. 3A In the lower region of FIG. 3A , an execution structure with parallelization of the runnables (A, B, D) is shown. As with the above explanations, time implicit communication is also used here.
- the relationship of the periodicities (PA, PB, PD) of the runnables (A, B, D) corresponds to the example from FIG. 1A .
- FIG. 3B and FIG. 4 show an MC execution of the ported control software in which the 1-to-n cardinality of the information transfer is likewise adopted. The depictions are executed in a manner analogous to FIG. 1B and FIG. 2 explained above.
- FIG. 4 The implementation of the information transfer according to FIG. 3A with a single ring buffer (MX) for storing the communication variable (X) is shown in FIG. 4 .
- MX ring buffer
- These reading accesses can take place successively, in a temporally overlapping manner, or fully in parallel, without interfering among each other.
- a ring buffer for storing communication variables (X, Y) that are used in an unbranched or branched information transfer represents an independent aspect of the present disclosure, which can be used exclusively or in an arbitrary combination with the other aspects and features.
- a separate ring buffer (MX, MY) is provided, which is assigned to the writing writer runnable (A, B).
- MX ring buffer assigned to the first runnable (A), from which the second and fourth runnables (B. D) read
- MY separate ring buffer assigned to the second runnable (B), from which the third runnable (C) reads.
- FIG. 5A shows an example of an SC software (SC-SW) with runnables (A, E, F), between which an information transfer exists with an m-cardinality (cX: m-1).
- the communication variable (X) is written here by both the first runnable (A) as well as by the fifth runnable (E). It is read, however, only by the sixth runnable (F).
- other relationships of the periodicities are present in the example of FIG. 5A .
- the periodicity (PA) of the first runnable (A) is 1 ms.
- the periodicity (PE) of the fifth runnable (E) is 4 ms.
- the periodicity (PF) of the sixth runnable (F) is 3 ms.
- FIG. 5A A structure for the information transfer with a parallelized execution of the runnables (A, E, F) is depicted in the lower part of FIG. 5A .
- Which is the most currently written value of the communication variable (X) can be clearly determined for the instances (F 1 , F 2 ) of the sixth runnable (F), specifically, for the instance (F 1 ), the value written by the instance (A 2 ), and for the instance (F 2 ), the value written by the instance (A 5 ).
- the instance (F 3 ) of the sixth runnable (F) this may result in a non-deterministic state.
- the instance (A 8 ) of the first runnable (A) and the instance (E 2 ) of the fifth runnable (E) each write a value of the communication variable (X).
- These writings can take place in a temporally overlapping manner, or fully simultaneously.
- values of the communication variables (X) can be generated with identical temporal ranks. In this case, it would not be possible to precisely determine a most current value of the communication variables (X) in an explicit manner.
- parallel writing accesses to one and the same ring buffer may result in resource conflicts.
- FIG. 6 shows an MC software and an implementation for the information transfer by which the problems specified above are resolved.
- a parallelized execution of the numerous writer runnables (A, E) and the one reader runnable (F) is provided for, wherein, however, a separate ring buffer (MX, MX′) is provided for each of the writer runnables (A, E), for storing the (shared) communication variable (X).
- a selection rule is defined for each reading access of the reader runnable (F), according to which it is determined from which of the ring buffers (MX, MX′) a value of the communication variable (X) is to be read in the case of a collision.
- the selection of the ring buffer (MX, MX′) to be used for a reading access can preferably be made as a function of a task ID, a periodicity (PA, PE, PF) of the participating runnables (A, E, F), or a task priority.
- FIG. 2 , FIG. 4 and FIG. 6 share the aspect that exactly one writer runnable (A, B, E) is allowed to write a communication variable (X, X′, Y) for each ring buffer (MX, MX′, MY).
- Each of the ring buffers (MX, MX′, MY) one or more reader runnables (B, C, D, F) can be associated for reading the communication variables (X, X′, Y), which read out a value from the ring buffer (MX, MX′, MY) successively, in a temporally overlapping manner, or fully simultaneously.
- TIC time implicit communication
- ineffective writings (U) can be determined, for which a reading by the instances of the one or more reader runnables (B, C, D, F) cannot take place in accordance with the relationships of the periodicities (and any of the phase shifts between the periods).
- Such ineffective writings (U) are depicted in FIG. 2 , FIG. 4 and FIG. 6 by broken lines. Effective writings, in contrast, are indicated with solid arrows.
- ineffective writings U
- the necessary number of fields in a ring buffer MX, MX′, MY
- the overhead for the storage management required for an implementation of the time implicit communication TIC is reduced.
- a possibly existing recurring communication pattern (R) for the reading and writing accesses to a communication variable (X, X′, Y) can be determined.
- Such a recurring communication pattern (R) has a pattern length (dR), which corresponds to the number of communication cycles, after which the communication pattern (R) repeats.
- the number of storage spaces, or fields, respectively, that are to be reserved in a ring buffer can be calculated as a function of the number of instances of the writing runnable (A) in the recurring communication pattern (R), minus the number of ineffective writings (U) in the recurring communication pattern (R).
- a recurring communication pattern (R, R′) can preferably be determined separately for each communication variable (X, Y).
- R first recurring communication pattern having recurrences (R 1 , R 2 , R 3 , . . . ) for the communication variable (X). It has a pattern length (dR) of 3 execution cycles or communication cycles.
- the communication pattern (R′) for the second communication variable (Y) there is another communication pattern (R′) having recurrences (R 1 ′, R 2 ′).
- the pattern duration (dR′) thereof is 15 cycles.
- communication patterns (R) can also be determined collectively for numerous communication variables (X, Y).
- the communication pattern (R′) encompasses precisely five respective repetitions (R 1 -R 2 ) of the communication pattern (R).
- the pattern length (dR, dR′) normally corresponds to the lowest common multiple of the periodicities (PA, PB, PC) of the runnables that are to be taken into account for communication pattern (R).
- a ring buffer is particularly well suited to such periodically recurring overwritings.
- the determination of a recurring communication pattern (R) can also be used to calculate a running index, which can be used as a temporal rank for the storage of a value of the communication variable (X, Y) in a ring buffer (MX, MY).
- the running index can be defined in the interval of the communication cycle (K 1 , K 2 , K 3 , . . . ) and reset with each repetition (R 1 , R 2 ) of the communication pattern (R).
- That value in the ring buffer (MX) that is to be used for a specific instance of a reader runnable can be determined by means of a permanent assignment rule.
- an assignment rule is calculated based on the known communication structure, in particular based on the known pattern duration, the periodicities of the participating runnables, and the potentially existing phase shifts between the periodicities.
- the running index can be an integer value, by way of example, which, starting from 0 or 1, is incremented with each execution or communication cycle, until reaching the pattern length (dR) of the communication pattern (R).
- An appropriate value of the communication variable is preferably determined in a buffer memory and in particular in a ring buffer (MX, MX′, MY) during the MC execution by a search algorithm, which adopts a reference value (e.g. the current point in time), and determines precisely this or a next (next higher/next lower) temporal rank within the temporal ranks that are stored in the buffer memory.
- a search algorithm which adopts a reference value (e.g. the current point in time), and determines precisely this or a next (next higher/next lower) temporal rank within the temporal ranks that are stored in the buffer memory.
- the so-called binary search is particularly preferably used.
- the reference symbol “MX” represents ring-buffer for first communication variable.
- the reference symbol “MX” represents second ring-buffer for first communication variable.
- the reference symbol “MY” represents ring-buffer for second communication variable.
- the reference symbol “t” represents real time scale in milliseconds.
- the reference symbol “Tb” represents base-interval.
- the reference symbol “a” represents execution scheme/cycle scale.
- the reference symbol “k” represents communication scheme/cycle scale.
- the reference symbols “K 0 , K 1 ” represents communication cycle.
- the reference symbol “U” represents ineffective writing.
- the reference symbol “IN” represents worst case time of occurrence.
- the reference symbol “OUT” represents worst case output time.
- the reference symbols “R, R′” represent recurring communication pattern.
- the reference symbols “R 1 , R 1 ′” represent pattern repetition 1.
- the reference symbols “R 2 , R 2 ′” represent pattern repetition 2.
- the reference symbols “dR, dR′” represent pattern duration in cycles.
- the reference symbol “Pub” represents publication time.
- the reference symbol “X” represents first communication variable.
- the reference symbol “Y” represents second communication variable.
- the reference symbols “WCRT, WCRT′” represent worst case reaction time.
- An example of advantage of the disclosed methods is that efficient parallelization of runnables is made possible even in a case where in the existing control software more than one writer-runnable and/or more than one reader-runnable access the same persistent memory variable, i.e. when a branched information transfer is present. It will be illustrated that based on a determined cardinality of the information transfer is can be decided, in which form a time implicit communication can be implemented, in particular which kind of buffer-memory can be used with specific benefit. Beyond that, based on the determined cardinality it may be decided, if an association of the memory should be provided to a writer-runnable or to a reader-runnable.
- a further advantage of the disclosed technology is that various forms of realizing or implementing the communication between at least one writer-runnable and at least one reader-runnable are shown, among which a selection can be made in the porting or converting into the MC control software to be generated. The selection can be made based on the determined cardinality and/or further parameters.
- the “cardinality” of information transfer in the existing control software turned out to be a particularly important decision criterion.
- various parameters can be defined for the MC software to be generated.
- the number of fields for a buffer can be optimized based on the cardinality and the periodicities of the writer- and reader-runnables taking part in an information transfer, or it may be determined for specific cardinalities, that parallelization is not advantageous, and thus that sequential execution of the runnables should also be provided in the generated MC software.
- Various new implementation types will be presented for the realization of time implicit communication.
- the existing control software may bean SC software or an MC software already.
- the existing MC software may contain sequential parts, i.e. SC execution parts, which can be optimized in a further optimization step.
- the existing control software may be an MC software, in which the implementation of communication among writer- and reader-runnables is not realized optimally.
- An existing MC software may already make use of time implicit communication, and the disclosed methods may potentially establish an optimized implementation for the time implicit communication, in particular by selecting a more suitable form of storing and retrieving values of a communication variable.
- an existing MC software without time implicit communication may be present and a communication among writer- and reader-runnables using time implicit communication (TIC) may be newly established in the generated software, in particular with selecting a particular suitable implementation.
- TIC time implicit communication
- the degree of parallellzation may potentially be increased by means of a preferentially automatically performed conversion and/or the efficiency may be increased further, wherein an optimized MC control software is generated out of the existing MC control software.
- the aspects of the starting situation and the steps to be performed for porting an existing SC software into an MC software as well as for the conversion of an existing MC software into an optimized MC software may be identical. For this reason mainly the method for porting an SC software into an MC software will be illustrated in the present disclosure. The disclosed steps can be applied in the same way to the generation of an optimized MC software out of an existing MC software.
- the existing SC control software or an existing MC software comprises so-called “runnables,” which are repeatedly executed at or with predefined periodicities.
- a runnable comprises a code or functional section, which frequently contributes to a control output in collaboration with other runnables.
- a complete control output, which generates a control command as a function of at least one detected physical value, is referred to as a chain of effects.
- numerous runnables participate in a chain of effects, which runnables are executed at the same or different periodicities, and which exchange information by storing and reading values in communication variables. It is known that chains of effects can be identified on the basis of these writing and reading accesses to communication variables.
- the periodicities of the runnables within a chain of effects can differ significantly (e.g. lying between 1 ms and 128 ms). Accordingly, a typical characteristic of the existing SC control software or the existing MC control software may be that the delay varies that lasts between a change in the physical parameter and the output of a control
- Each execution of a runnable is referred to as an “instance” of this runnable. If an “information transfer” or “communication between runnables” is described below, this refers to a rule for recurring information transfer, which takes place between the respective instances of different runnables. A concrete designation of the respective instances will be given in several sections for clarification and explanation. Otherwise, for the sake of simplicity and better readability, reference is made merely to the runnables that participate in the communication.
- An information transfer between runnables takes place in the SC control software or in the existing MC control software through writing and reading accesses to a communication variable.
- the runnable that makes use of the information can at the same time be a producing runnable with respect to another communication variable. The roles of the runnables can thus be determined based on a specific communication variable.
- a “chain of effects” is an input-to-output information processing that is performed in the existing control software, e.g. in order to generate a control command (output) as a reaction to a physical change to a sensed parameter (input).
- one or more runnables can participate as well as information transfers taking place between these runnables by using respective communication variables.
- a first runnable repeatedly retrieves a physical value, and stores it as a digital numerical value in a first communication variable.
- a second runnable reads the numerical value from the first communication variable, calculates a status value therefrom, and stores it in a second communication variable.
- a third runnable reads the status value from the second communication variable, and generates a control command therefrom, which is implemented in the actuation of an actuator, for example.
- the first runnable is a writer runnable and the second runnable is a reader runnable.
- the second runnable is a writer runnable
- the third runnable is a reader runnable.
- the porting is performed for a SC control software, which comprises numerous repeatedly executable runnables, wherein information is exchanged between the runnables through writing (writer runnable) and reading (reader runnable) of communication variables.
- these runnables are at least partially parallelized.
- a reader runnable which is (always) executed after an associated writer runnable in the SC execution, is temporally preponed in MC execution, and is thus executed in MC execution at a relatively earlier point in time than in SC execution.
- the reader runnable can, in particular, be executed entirely in parallel to this writer runnable, or it can be executed in a temporally overlapping manner.
- the first aspect of the disclosure can be applied in the same way for optimization of an existing MC software. Then a conversion of an existing MC software is performed, wherein the existing MC software comprises numerous repeatedly executable runnables, and wherein information is exchanged between the runnables through writing (writer runnable) and reading (reader runnable) of communication variables. In schedule for the MC software to be generated, these runnables are at least partially parallelized, wherein the degree of parallelization is potentially increased in the MC software to be generated compared to the existing MC software. As a result, it may be the case that a reader runnable, which was to be executed after an associated writer runnable in the SC execution, i.e.
- the reader runnable can, in particular, be executed entirely in parallel to this writer runnable, or it can be executed in a temporally overlapping manner.
- a modified information exchange via time implicit communication is provided for parallelized runnables, in order to replace the SC chain of effects with an MC chain of effects having the same control results, or respectively in order to replace sequential parts in the existing MC chain of effects by an optimized MC chain of effects having the same control results.
- the communication of the individual values, as in the SC case becomes predictable in a precise way, which is what distinguishes the subject matter of the present disclosure from other MC communication methods.
- the concept of the time implicit communication shall be explained below on the basis of an example.
- Time implicit communication means that instead of being provided with the information value from the g repetition interval the g reader instance is provided with an information value not coming from the (parallel running) g writer instance, but rather from an earlier instance, e.g. the preceding g- 1 writer instance,.
- a modified MC chain of effects is formed, which leads to same results in terms of content (valid control command), but can, however, cover a somewhat larger number of repetition intervals, in particular when the time implicit communication is used in the chain of effects with regard to multiple communication variables.
- a structural extension of a chain of effects may be created. The structural extension can however be compensated for through a temporal scaling of the execution scheme, such that the MC software does not have an effective delay for providing a control output.
- control output is always implemented such that the ported MC control software generates a valid control result within the necessary reaction time.
- the periodicities provided for the runnables could be accelerated and/or a processor cycle of the MC control device can be modified such that even with a structural extension of the chain of effects, it is possible to comply with, or stay within, a duration of the worst case reaction delay determined or defined for SC software.
- the term “cardinality” is used below to indicate the numerical relationship of reader runnables and writer runnables when accessing a specific communication variable.
- the term “cardinality” is used in a manner analogous to the min-max notation known in the so-called entity-relationship system, and it indicates how many writer-runnables or reader-runnables participate exactly or at maximum in the information transfer with respect to a specific communication variable, i.e.
- a 1-to-1 cardinality (1 writer, 1 reader), a 1-to-n cardinality (1 writer, multiple or at maximum n readers), an m-to-1 cardinality (multiple or at maximum m writers, 1 reader), and an m-to-n cardinality (multiple or at maximum m writers, multiple or at maximum n readers) are possible, which shall be explained in detail below.
- the terms “writer-to-reader cardinality” and “cardinality of the information transfer” are used as associated terms.
- an analysis of the existing control software is carried out with respect to the writer-to-reader cardinality of the information exchange with respect to a specific communication variable.
- Parallelization or sequencing of the participating writer runnables and reader runnables is established depending on the determined writer-to-reader cardinality. For example, in case of a 1-to-1 cardinality parallelization may be established, whereas in case of an m-to-1 or m-to-n cardinality no parallelization may be established.
- Based on the detected cardinality it may furthermore be defined, in which form time implicit communication among the one or more writer-runnables and the one or more reader-runnables is to be implemented. It is particularly preferred that rules are deposed for those decisions, which can be enforced automatically.
- An unbranched information exchange takes place from precisely one writer runnable to precisely one reader runnable, i.e. the cardinality of the information transfer is 1-to-1.
- more than one writer runnable and/or more than one reader runnable participate, each of which accesses the same communication variable, i.e. there may be a 1-to-n cardinality, an m-to-1 cardinality, or an m-to-n cardinality.
- An m-to-n cardinality is very unusual in vehicle control software.
- an m-to-n cardinality If an m-to-n cardinality is found, then either a parallelization of the writer runnables and reader runnables can be avoided, or a formal division into sub-groups may be performed for the information exchange, which sub-groups are treated according to the rules described below.
- An m-to-n cardinality can be formally divided into m sets of a 1-to-n cardinality or into n sets of an m-to-1 cardinality.
- a realization or implementation of time implicit communication can have various forms.
- the related communication variable may be stored in a double-buffer with switching logic.
- the switching logic causes that one field of the double-buffer is always available for a write-procedure, while the other field is accessible for one or several read procedures.
- the field assignments are interchanged. In doing so, always the most up-to-date value of the communication variable is made available in the field that can be accessed with a read-procedure.
- double-buffers in the realization of time implicit communication for a 1-to-n cardinality, wherein in particular a separate double-buffer is set up at multiple or each of the n readers, and wherein the value of the communication variable to be written is stored in multiple or all double-buffers.
- a predefined threshold for the number n of reader runnables based on deceeding a predefined threshold for the number n of reader runnables, parallelized execution of the writer runnable and the at least one reader runnable may be established. Furthermore, the related communication variable may be stored (multiple times) in a respective double buffer, which is associated to a reader runnable.
- the predefined threshold may be set based on the specific architecture and amount, for example, to the value 2 or 3. The implementations mentioned below do not have such disadvantages of multiple write-procedures or increased memory consumption.
- time implicit is communication is implemented, by storing values of a communication variable together with an assigned temporal rank in a buffer (buffer memory having numerous fields/memory cells), in particular in a ring buffer.
- a buffer buffer memory having numerous fields/memory cells
- This form of implementation is particularly beneficial for the case of a 1-to-n cardinality.
- One or more reader runnables that want to access this communication variable are provided with an appropriate value from the buffer, selected as a function of the temporal rank.
- the selection rules can be in accordance with arbitrary criteria.
- the respective most current temporal rank can be located in the buffer through an appropriate search strategy, and the value assigned thereto can be made available to the reader runnable.
- Efficient and quick finding of the correct value of the communication variable may be crucial to the execution speed of the generated MC software.
- the efficiency of search algorithms that shall determine the correct time rank and thus the correct value for a reader runnable, depends on the structure of the stored information within the buffer. As a rule, particularly fast search is possible on data lines, in which the values are stored in a sorted order, thus either in increasing or decreasing order.
- a calculating scheme for the direct determination of the correct value (provided for the respective instance of the reader runnable) can be deposed.
- the calculating scheme is particularly advantageous when a repetitive communication pattern can be determined for the reading and writing accesses with respect to a specific communication variable, which has a fixed pattern length.
- a pattern length can be reflected in particular by a specific number of communication cycles, after which the communication pattern repeats.
- number frequently corresponds to the lowest common multiple of the periodicities of the participating reader runnables and (preferably precisely one) writer runnable.
- So-called ring buffers have proven to be particularly beneficial for the efficient storage of values of the communication variables.
- a ring buffer may in particular be used for the realization of time implicit communication (TIC) in case of a 1-to-n cardinality, and in fact independently of the number n of reader-runnables.
- Ring buffers normally have a fixed number of fields or storage cells, which are overwritten cyclically.
- TIC time implicit communication
- values of a communication variable are stored in a ring buffer.
- Another type of buffer memory can always be used as well, in particular a double buffer with switching logic.
- temporal rank for the storage of a value of the communication variable.
- temporal rank for the storage of a value of the communication variable.
- a cyclical processing scheme can be used for executing the runnable.
- an execution cycle index can be used as the storage value for the temporal rank.
- a cyclical communication scheme can be used for the information transfer.
- a communication cycle index can be used as the storage value for the temporal rank.
- a running index can also be used as the storage value for the temporal rank.
- the running index can count the communication cycles or execution cycles or a real time since the beginning of a repetition of the communication cycle, for example.
- a running index is particularly preferably used as the storage value for the temporal rank, which running index is reset at the start of each repetition of the communication pattern, and is incremented with each communication cycle.
- the correct value in the ring buffer can then be determined on the basis of the running index and a fixed assignment rule.
- the assignment rule is calculated based on the static temporal relations of writing and reading accesses to a communication variable in the communication pattern, in particular on the basis of the periodicities of the (preferably just one) writer runnable and the at least one reader runnable. Any phase shifts that are present between the periods of the runnables can also be taken into account for the calculation of the assignment rule.
- a phase shift occurs, for example, when the earliest instance of a runnable in the communication pattern does not begin in the first execution or communication cycle, but rather in another cycle.
- the assignment rule indicates which reader instance in the communication pattern is assigned to which running index stored in the ring buffer for the readout of an associated value.
- the rule-based determination of a value in the ring buffer can be executed particularly quickly and substantially independently of the size of the ring buffer, or number of fields therein.
- any suitable reference value can be used, which enables an association to the temporal course of the control software.
- This can be a current execution cycle during a writing procedure, for example, or it can be that execution cycle at which the instance of the writing runnable was started (in particular if the execution of the instance lasts for more than one execution cycle).
- values can be stored as a temporal rank, which relate to the momentary point in time or to relevant temporal trigger-points lying in the past.
- a publication time (lying in the future) can be defined and stored as a temporal rank of a value of the communication variable to be stored.
- a reading access to this value of the communication variable is not enabled before reaching the publication time.
- the publication time can be calculated according to various criteria. Particularly preferably, a subsequent communication cycle or subsequent execution cycle, starting after the current writing procedure, is established as the publication time. Alternatively, a subsequent communication cycle or subsequent execution cycle, starting after termination of the writing instance, can serve as the publication time.
- the optimization method according to the present disclosure may also be used for analyzing an already existing implementation of communication in the existing MC control software and to change the implementation in the MC control software to be generated, wherein in particular time implicit communication and/or an optimized implementation of time implicit communication may be established in the MC software to be generated. It is in particular possible, to perform an analysis of the existing MC control software with respect to the writer-to-reader cardinality of the information exchange, and it may be defined based on the determined cardinality, if the existing implementation of communication shall be maintained depending on the determined writer-to-reader cardinality, or if another implementation of communication is established in the MC software to be generated, in particular an implementation of time implicit communication (TIC).
- TIC time implicit communication
- time implicit communication may instead be established in the MC software to be generated by storing the related communication variable in a separate ring buffer, which is associated to the writer-runnable.
- the optimization method according to the present disclosure may thus (also) be used to select a better implementation for time implicit communication based on a determined cardinality of the information transfer with respect to a specific communication variable, and to establish the better implementation in the MC software to be generated.
- embodiments, configurations, aspects of method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software have been described by way of example, it should be appreciated that embodiments, configurations, aspects of the present disclosure are not limited to the respective embodiments, the respective configurations, and the respective aspects described above. For example, embodiments, configurations, aspects obtained by appropriately combining technical portions disclosed in different embodiments, configurations, and aspects are included within a range of embodiments, configurations, and aspects of the present disclosure.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
Claims (16)
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE102016120216 | 2016-10-24 | ||
| DE102016120216 | 2016-10-24 | ||
| DE102016120216.9 | 2016-10-24 | ||
| DE102017124105 | 2017-10-17 | ||
| DE102017124105.1 | 2017-10-17 | ||
| DE102017124105.1A DE102017124105A1 (en) | 2016-10-24 | 2017-10-17 | Method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20180113706A1 US20180113706A1 (en) | 2018-04-26 |
| US10372445B2 true US10372445B2 (en) | 2019-08-06 |
Family
ID=61865856
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/790,320 Expired - Fee Related US10372445B2 (en) | 2016-10-24 | 2017-10-23 | Method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US10372445B2 (en) |
| DE (1) | DE102017124105A1 (en) |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090112853A1 (en) * | 2007-10-29 | 2009-04-30 | Hitachi, Ltd. | Ranking query processing method for stream data and stream data processing system having ranking query processing mechanism |
| US20090165014A1 (en) * | 2007-12-20 | 2009-06-25 | Samsung Electronics Co., Ltd. | Method and apparatus for migrating task in multicore platform |
| US20120120965A1 (en) * | 2010-11-12 | 2012-05-17 | Alcatel-Lucent Usa Inc. | Lock-less and zero copy messaging scheme for telecommunication network applications |
| DE102014103139A1 (en) | 2014-03-10 | 2015-10-08 | Denso Automotive Deutschland Gmbh | Parallelized execution of single-core control software on multi-core vehicle control units |
| US20160328272A1 (en) * | 2014-01-06 | 2016-11-10 | Jonson Controls Technology Company | Vehicle with multiple user interface operating domains |
| US20170168948A1 (en) * | 2015-12-15 | 2017-06-15 | Vmware, Inc. | Sizing cache data structures using fractal organization of an ordered sequence |
| DE102016107646A1 (en) | 2016-04-25 | 2017-10-26 | Barcelona Supercomputing Center | Optimization technology for single to multi-core porting of control software |
-
2017
- 2017-10-17 DE DE102017124105.1A patent/DE102017124105A1/en not_active Withdrawn
- 2017-10-23 US US15/790,320 patent/US10372445B2/en not_active Expired - Fee Related
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20090112853A1 (en) * | 2007-10-29 | 2009-04-30 | Hitachi, Ltd. | Ranking query processing method for stream data and stream data processing system having ranking query processing mechanism |
| US20090165014A1 (en) * | 2007-12-20 | 2009-06-25 | Samsung Electronics Co., Ltd. | Method and apparatus for migrating task in multicore platform |
| US20120120965A1 (en) * | 2010-11-12 | 2012-05-17 | Alcatel-Lucent Usa Inc. | Lock-less and zero copy messaging scheme for telecommunication network applications |
| US20160328272A1 (en) * | 2014-01-06 | 2016-11-10 | Jonson Controls Technology Company | Vehicle with multiple user interface operating domains |
| DE102014103139A1 (en) | 2014-03-10 | 2015-10-08 | Denso Automotive Deutschland Gmbh | Parallelized execution of single-core control software on multi-core vehicle control units |
| US20170168948A1 (en) * | 2015-12-15 | 2017-06-15 | Vmware, Inc. | Sizing cache data structures using fractal organization of an ordered sequence |
| DE102016107646A1 (en) | 2016-04-25 | 2017-10-26 | Barcelona Supercomputing Center | Optimization technology for single to multi-core porting of control software |
Non-Patent Citations (1)
| Title |
|---|
| "Porting of Automotive Application on to Embedded Multicore Platform" by Jijinraj, and published in International Journal of Scientific & Engineering Research, vol. 4, Issue 7, Jul. 2013 (Year: 2013). * |
Also Published As
| Publication number | Publication date |
|---|---|
| DE102017124105A1 (en) | 2018-04-26 |
| US20180113706A1 (en) | 2018-04-26 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8732714B2 (en) | Method for reorganizing tasks for optimization of resources | |
| US20110209153A1 (en) | Schedule decision device, parallel execution device, schedule decision method, and program | |
| CN106227507B (en) | Computing system and its controller | |
| US8799880B2 (en) | Parallelization of PLC programs for operation in multi-processor environments | |
| US20100070958A1 (en) | Program parallelizing method and program parallelizing apparatus | |
| CN114580653A (en) | Machine learning calculation optimization method and compiler | |
| US20050289530A1 (en) | Scheduling of instructions in program compilation | |
| JP2500079B2 (en) | Program optimization method and compiler system | |
| CN110458326B (en) | Mixed group intelligent optimization method for distributed blocking type pipeline scheduling | |
| CN116227856B (en) | A mission planning method, device and storage medium for multiple satellites and multiple missions | |
| CN114564412B (en) | Method and system for deterministic transaction concurrent scheduling of block chains | |
| CN104978321A (en) | Method and device for constructing data queue, method for inserting object into data queue and method for consuming object from data queue | |
| CN113220444B (en) | OS-optimized workflow allocation | |
| CN119536818B (en) | Instruction scheduling decision method, device, equipment and medium | |
| Wan et al. | Scheduling with variable time slot costs | |
| US10372445B2 (en) | Method for porting a single-core control software to a multi-core control device or for optimizing a multi-core control software | |
| CN107423810B (en) | Job shop scheduling method and system based on camel group algorithm | |
| US10747546B2 (en) | Distributed allocation device, distributed allocation system, and distributed allocation method | |
| CN117973752A (en) | Task allocation method and device and computer readable storage medium | |
| Ogawa et al. | Efficient approach to ensure temporal determinism in automotive control systems | |
| Elboher et al. | A formal metareasoning model of concurrent planning and execution | |
| US11204805B2 (en) | Computational resource management apparatus which optimizes computational resources to be allocated to tasks having a dependency relationship, computational resource management method and computer readable recording medium | |
| CN111045959A (en) | Complex algorithm variable mapping method based on storage optimization | |
| CN113672300B (en) | Plug-in scheduling method, device and storage medium | |
| CN116932154A (en) | Task scheduling method, device, equipment and storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: DENSO CORPORATION, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BOEDDEKER, BERT;LANGEN, DOMINIK;KEHR, SEBASTIAN;REEL/FRAME:043922/0129 Effective date: 20171020 |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
| FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20230806 |