Data processing execution device, data processing execution method and data processing execution program

The data processing execution device allows for flexible engine takeover and scheduling, addressing the inflexibility of fixed engine selection by ensuring timely task completion despite priority changes.

DE112019007851B4Active Publication Date: 2025-10-23MITSUBISHI ELECTRIC CORP
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
DE112019007851
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Filing Date
2019-12-12
Publication Date
2025-10-23
Estimated Expiration
2039-12-12

AI Technical Summary

Technical Problem

Existing data processing techniques fail to flexibly adapt to changes in situations due to fixed engine selection, leading to incomplete processing when higher-priority tasks occur during execution.

Method used

A data processing execution device with a multitude of engines, an engine selection unit, and a control unit that allows for the takeover of data processing by another engine if necessary, enabling flexible scheduling.

Benefits of technology

Enables flexible scheduling of data processing to accommodate changes, ensuring timely completion of tasks even when higher-priority tasks interrupt ongoing processing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Data processing execution unit (100), comprising: a variety of engines, each performing data processing and exhibiting a different degree of operational accuracy; an engine selection unit (102) to select, in a case where new data processing occurs in a situation where execution data processing is data processing performed by any engine of the plurality of engines, and assigned data processing is data processing not yet performed but to which an engine has already been assigned, and in a case where a priority level is specified for each of the execution data processing, the assigned data processing, and the new data processing, a new engine to perform the assigned data processing and an engine to perform the new data processing from the plurality of engines such that the execution data processing, the assigned data processing, and the new data processing are each performed within their respective completion deadlines, and such that data processing of a higher priority is subordinate to the execution data processing,the new data processing and the assigned data processing is performed by an engine with a higher degree of operational precision; and , a control unit (103, 104) to cause the execution data processing, the assigned data processing and the new data processing to be carried out by the engines selected by the engine selection unit.
Need to check novelty before this filing date? Find Prior Art

Description

field of technology

[0001] The present invention relates to a planning technique for data processing. State of the art

[0002] As a technique for planning data processing, there is a technique that is disclosed in patent literature 1.

[0003] Patent literature 1 discloses a technique for selecting an engine capable of completing data processing within a given timeframe from a plurality of data processing engines. According to the technique described in patent literature 1, for example, an engine is selected whose operational accuracy is low but processing time is short, or an engine whose operational accuracy is high but processing time is long. List of quotations Patent literature

[0004] Patent literature 1: WO2018-198823 A Brief description of the invention Technical task

[0005] According to the technique described in patent literature 1, at the beginning of data processing, an engine is selected that is capable of completing the data processing within a given timeframe. Therefore, if, according to the technique described in patent literature 1, after the execution of a specific data processing operation (hereinafter referred to as "data processing A") has started, a new data processing operation (hereinafter referred to as "data processing B") with a higher priority than data processing A occurs due to a random event, a situation arises in which it is not possible to complete data processing A within the given timeframe.

[0006] This means that if data processing B, which has a higher priority, occurs after the execution of data processing A, the execution of data processing A is interrupted to prioritize the execution of data processing B. Then, after data processing B is completed, the execution of data processing A is resumed. According to patent literature 1, an engine used in data processing A is fixed at the start of data processing A and cannot be changed thereafter. Therefore, according to the technique described in patent literature 1, it is not possible to complete data processing A within the allotted time if a random event occurs.

[0007] As described above, the problem with the technique described in patent literature 1 is that it is not possible to flexibly plan data processing in response to a change in the situation, since an engine for executing the data processing is fixed.

[0008] One object of the present invention is to solve this type of problem. In particular, one object of the present invention is primarily to make the planning of data processing in response to a change in a situation flexibly feasible. Technical solution

[0009] According to one aspect of the present invention, a data processing execution device is provided which comprises: a multitude of engines, each of which performs data processing; an engine selection unit to select from the multitude of engines, while any engine of the multitude of engines is performing data processing as an execution engine, a takeover engine to take over the execution of data processing performed by the execution engine; and a control unit to instruct the execution engine to suspend the execution data processing and to instruct the takeover engine to take over the execution data processing. Advantageous effects of the invention

[0010] According to the present invention, it is possible to induce a takeover engine to take over the execution of data processing even if an execution engine is performing execution data processing. Therefore, according to the present invention, it is possible to flexibly schedule data processing in response to a change in the situation. Brief description of the drawings Fig. Figure 1 is a sketch illustrating an example of a hardware configuration of a data processing execution device according to a first embodiment; Fig. Figure 2 is a sketch illustrating an example of a functional configuration of the data processing execution device according to the first embodiment; Fig. Figure 3 is a sketch that represents a relationship between an engine, a degree of operational accuracy, data processing and a priority level according to the first embodiment; Fig. 4 is a sketch that shows an example of an engine list according to the first embodiment; Fig. Figure 5 is a sketch illustrating an example of an execution data processing list according to the first embodiment; Fig. Figure 6 is a sketch illustrating an example of an execution standby data processing list according to the first embodiment; Fig. Figure 7 is a sketch that shows an example of a block function list and engine implementation code according to the first embodiment; Fig. Figure 8 is a sketch illustrating a configuration example of an operation result storage memory according to the first embodiment; Fig. Figure 9 is a sketch illustrating an example of an execution plan for data processing in a stable state according to the first embodiment; Fig. Figure 10 is a sketch illustrating an example of a data processing execution plan in the event of a random event occurring according to the first embodiment; Fig. Figure 11 is a sketch illustrating an example of a data processing execution plan in the event of a random event occurring according to the first embodiment; Fig. Figure 12 is a sketch illustrating an example of an execution plan for data processing in a stable state according to the first embodiment; Fig. Figure 13 is a sketch illustrating an example of a data processing execution plan in the event of a random event occurring according to the first embodiment; Fig. Figure 14 is a sketch that provides an overview of operations of the data processing execution device according to the first embodiment; Fig. Figure 15 is a sketch illustrating an area of ​​first-combination extraction processing according to the first embodiment; Fig. Figure 16 is a sketch illustrating an area of ​​second-combination extraction processing (first time) according to the first embodiment; Fig. Figure 17 is a sketch illustrating an area of ​​second-combination extraction processing (second time) according to the first embodiment; Fig. Figure 18 is a flowchart illustrating an example of an engine selection unit according to the first embodiment; Fig. Figure 19 is a flowchart that illustrates a detail of the first-combination extraction processing according to the first embodiment; Fig. Figure 20 is a flowchart that illustrates a detail of the second-combination extraction processing according to the first embodiment; Fig. Figure 21 is a flowchart that illustrates an example of operations of an engine execution management unit according to the first embodiment; Fig. Figure 22 is a flowchart that illustrates an example of operations of the engine execution management unit according to the first embodiment; Fig. Figure 23 is a flowchart that illustrates an example of operations of the engine execution management unit according to the first embodiment; Fig. Figure 24 is a flowchart that illustrates an example of operations of an engine execution unit according to the first embodiment; Fig. Figure 25 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at time = 0 according to the first embodiment; Fig. Figure 26 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at time = 25 according to the first embodiment; Fig. Figure 27 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at a time = 150 according to the first embodiment; Fig. Figure 28 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at a time = 200 according to the first embodiment; Fig. Figure 29 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at a time = 350 according to the first embodiment; Fig. Figure 30 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at a time = 425 according to the first embodiment; Fig. Figure 31 is a sketch illustrating an example of an execution data processing list and an execution standby data processing list at a time = 775 according to the first embodiment; Fig. Figure 32 is a sketch illustrating an example of a functional configuration of a data processing execution device according to a second embodiment; Fig. Figure 33 is a sketch illustrating an example of a temporal sequence of conversion processing according to the second embodiment; Fig. Figure 34 is a sketch illustrating an overview of operations performed by a conversion processing unit according to the second embodiment; and Fig. Figure 35 is a sketch illustrating an example of a conversion processing time list according to the second embodiment. Description of embodiments

[0011] Embodiments of the present invention are described below with reference to sketches. In the following explanation and in the sketches of the embodiments, identical or corresponding elements are designated by the same reference numerals. First embodiment***Explanation of the configuration***

[0012] Fig. Figure 1 is a sketch illustrating an example of a hardware configuration of a data processing execution device 100 according to the first embodiment.

[0013] The data processing execution device 100 according to the present embodiment is a computer. A process of functional sequences of the data processing execution device 100 corresponds to a data processing execution procedure. Furthermore, a program for implementing functional sequences of the data processing execution device 100 corresponds to a data processing execution program.

[0014] The data processing execution unit 100 performs data processing. Data processing is the processing of digital signals to perform analysis, manipulation, classification, conversion, etc., by performing at least one arithmetic or logical operation on digital signals.

[0015] The data processing execution unit 100 comprises, as hardware components, a processing circuit 900, a central processing unit (CPU) 901, a RAM 902, a ROM 903 and a hardware accelerator 904.

[0016] The hardware accelerator 904 includes a field-programmable gate array (FPGA) 905, a graphics processing unit (GPU) 906, a digital signal processor (DSP) 907 and an application-specific integrated circuit (ASIC) 908.

[0017] The processing circuit 900 is implemented by a CPU, an FPGA, a GPU, a DSP, or an ASIC. The processing circuit 900 has different functions than the FPGA 905, the GPU 906, the DSP 907, and the ASIC 908, which implement an engine described below; therefore, a different name is used to distinguish the processing circuit 900 from these. The processing circuit 900 can be any of the CPU 901, the FPGA 905, the GPU 906, the DSP 907, and the ASIC 908, or any of the CPUs, FPGAs, GPUs, DSPs, and ASICs that are different from these. The processing circuit 900 corresponds to a processing circuit. An example is described below where the processing circuit 900 is a CPU other than the CPU 901.

[0018] The processing circuit 900 comprises a data processing registration unit 101, an engine selection unit 102, an engine execution management unit 103, an engine execution unit 104 and a communication processing unit 105, which are described below.

[0019] The data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104, and the communication processing unit 105 are implemented by a program. That is, the processing circuit 900 executes a program to implement the functions of the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104, and the communication processing unit 105, and achieves the functions of the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104, and the communication processing unit 105.

[0020] The program for implementing the functions of the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104, and the communication processing unit 105 is stored in ROM 903. The program for implementing the functions of the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104, and the communication processing unit 105 is loaded into RAM 902 and executed by the processing circuit 900.

[0021] Furthermore, at least some of the information, data, signal value and variable value indicating a result of processing in the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104 and the communication processing unit 105 is stored in at least one of the RAM 902, the ROM 903 and a register and a cache memory within the processing circuit 900.

[0022] Furthermore, the program for implementing the functions of the Data Processing Registration Unit 101, the Engine Selection Unit 102, the Engine Execution Management Unit 103, the Engine Execution Unit 104, and the Communication Processing Unit 105 can be stored on a portable recording medium such as a magnetic disk, a flexible disk, an optical disc, a compact disc, a Blu-ray disc (registered trademark), and a DVD, etc. Accordingly, it is applicable to distribute the portable recording medium containing the program to implement the functions of the Data Processing Registration Unit 101, the Engine Selection Unit 102, the Engine Execution Management Unit 103, the Engine Execution Unit 104, and the Communication Processing Unit 105.

[0023] Furthermore, the “unit” of the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104 and the communication processing unit 105 can be replaced by “circuit”, “step”, “procedure” or “processing”.

[0024] Each of the CPU 901, FPGA 905, GPU 906, DSP 907 and ASIC 908 is a hardware resource (hereinafter referred to as an H / W resource) for realizing an engine for performing data processing.

[0025] The engine is a concept that integrates a hardware resource and software for performing data processing.

[0026] The engine is implemented, for example, by the CPU 901 to execute a program that describes algorithms for data processing.

[0027] A convolutional neural network (CNN) is cited as an example of such an engine.

[0028] Fig. Figure 1 shows the CPU 901, the FPGA 905, the GPU 906, the DSP 907, and the ASIC 908 as hardware resources for implementing the engine. However, it is sufficient for at least one of these to be considered a single hardware resource for implementing the engine. This means that the hardware resource for implementing the engine can be just the CPU 901, or it can be a combination of the CPU 901 and the FPGA 905, or the GPU 906 and the DSP 907.

[0029] The relationship between data processing and the engine is described below.

[0030] The data processing execution unit 100 can be connected via a network to a device such as a sensor, a display device, an actuator, etc. Furthermore, the data processing execution unit 100 can be connected via a network to a data processing execution unit of a similar type to the data processing execution unit 100.

[0031] Fig. Figure 2 shows an example of a functional configuration of the data processing execution unit 100 according to a present embodiment.

[0032] The data processing execution unit 100 according to the present embodiment is configured by the data processing registration unit 101, the engine selection unit 102, the engine execution management unit 103, the engine execution unit 104, the communication processing unit 105, engine execution management data 120, engine software 130 and an operation result storage memory 140.

[0033] The Engine execution unit 104 is further configured by a CPU execution unit 1041 and an FPGA execution unit 1042.

[0034] The engine execution management data 120 are further configured by an execution data processing list 121 and an execution standby data processing list 122.

[0035] The engine software 130 is further configured by a block function list 131 and an engine implementation code 132.

[0036] Before a detail of the in Fig. The functional configuration shown in section 2 describes a relationship between an engine, a degree of operational accuracy (hereinafter referred to simply as a degree of accuracy), data processing, and a priority level.

[0037] Fig. Figure 3 illustrates the relationship between an engine, a degree of operational accuracy, data processing, and a priority level.

[0038] The example in Fig. Section 3 assumes that there are five types of data processing. A data processing identifier (ID) is assigned to each type of data processing. The data processing ID is an identifier that uniquely identifies the data processing. Subsequently, data processing with a data processing ID 1 is also referred to as data processing 1. Other data processing is similarly referred to as data processing 2, data processing 3, data processing 4, and data processing 5.

[0039] Furthermore, priority levels are defined for five types of data processing. These priority levels are described using numerical values. It is assumed that the larger the numerical value, the higher the priority.

[0040] In the present embodiment, as in Fig. As shown in Figure 3, it is assumed that the priority level of data processing is the highest for data processing 1 and the priority level of data processing 5 is the lowest for data processing 5.

[0041] In the present embodiment, the data processing execution unit 100 preferentially executes higher-priority data processing before lower-priority data processing. If higher-priority data processing occurs subsequently during the execution of lower-priority data processing, and a conflict exists between the lower-priority and high-priority data processing on a hardware resource, the data processing execution unit 100 interrupts the execution of the lower-priority data processing and first executes the high-priority data processing on the hardware resource.

[0042] Each of 1A, 1B, 2A, ..., 5C in Fig. 3 stands for an engine. 1A and 1B are engines for executing data processing 1. 2A, 2B and 2C are engines for executing data processing 2. 3A, 3B and 3C are engines for executing data processing 3. 4A and 4B are engines for executing data processing 4. 5A, 5B and 5C are engines for executing data processing 5.

[0043] Each engine's alphabetic part corresponds to a level of accuracy. "A" represents an engine with the highest level of accuracy, and "C" represents an engine with the lowest level of accuracy. As described, in the present embodiment, there are two or more engines capable of performing the same data processing, and each of these two or more engines differs in its level of accuracy.

[0044] The two or more engines performing the same data processing are not necessarily implemented using the same hardware resource. For example, engine 1A could be implemented using the FPGA 905, and engine 1B could be implemented using the CPU 901.

[0045] Furthermore, there is a trade-off between accuracy and processing time. This means that even when the same data processing is performed, the processing time will be long for a high-accuracy engine and short for a low-accuracy engine. Therefore, if high-priority data processing is re-entered due to a random event, the engine may switch from processing low-priority data to processing low-accuracy data, thus reducing the processing time of the low-priority data processing.

[0046] Next, details of the functional configuration of the in Fig. The data processing execution unit 100 shown in Figure 2 is described based on the above premise.

[0047] The Data Processing Registration Unit 101 accepts a data processing command. A data processing command is an instruction to execute data processing. The data processing command contains a data processing ID, a priority level, and a deadline.

[0048] The deadline is a preclusive deadline for data processing.

[0049] The data processing registration unit 101 transfers the data processing command to the engine selection unit 102.

[0050] Engine Selection Unit 102 selects from a variety of engines an engine intended for performing the data processing specified in the data processing command. Engine Selection Unit 102 refers to Engine List 110 and selects the appropriate engine. Details of Engine List 110 are described below.

[0051] The engine selected by Engine Selection Unit 102 to perform data processing is also called an execution engine. The data processing performed by the execution engine is also called execution data processing. Furthermore, data processing for which an engine has been selected by Engine Selection Unit 102 and to which the engine has been assigned, but which has not yet been executed, is also called assigned data processing.

[0052] If new data processing occurs while the execution engine is performing execution data processing, the engine selection unit 102 can select an engine to take over the execution data processing as a takeover engine.

[0053] More specifically, if at least one of the execution data processing, new data processing, and assigned data processing operations is not completed within the respective time limits by the execution engine, the engine selection unit 102 selects an engine capable of completing the execution data processing, new data processing, and assigned data processing within the respective time limits as the takeover engine. For example, the engine selection unit 102 selects an engine with a lower degree of operational precision than the execution engine that is capable of completing the execution data processing, new data processing, and assigned data processing within the respective time limits as the takeover engine.Furthermore, if there are two or more such engines, the engine selection unit 102 selects the engine with the highest degree of operational accuracy as the takeover engine.

[0054] Engine selection unit 102 checks for switching from one engine assigned to the assigned data processing to another engine. Therefore, engine selection unit 102 selects as the takeover engine an engine capable of completing the execution data processing, the new data processing, and the assigned data processing within their respective completion deadlines, in combination with switching from one engine assigned to the assigned data processing to another engine.

[0055] Furthermore, if two or more parts of execution data processing are present, the engine selection unit 102 selects as the takeover engine an engine that is capable of completing two or more parts of execution data processing, new data processing and assigned data processing within their respective time limits.

[0056] Engine Selection Unit 102 checks for switching to a different engine for each execution data processing operation. Therefore, Engine Selection Unit 102 selects as the takeover engine an engine capable of completing execution data processing, new data processing, assigned data processing, and other execution data processing within their respective completion deadlines, in combination with switching to a different engine for the other execution data processing and switching another engine assigned to the assigned data processing to a different engine.

[0057] Furthermore, the engine selection unit 102 selects the takeover engine so that data processing with the higher priority level under execution data processing, new data processing and assigned data processing is performed by an engine with the higher degree of operational precision.

[0058] The processing performed by the engine selection unit 102 corresponds to engine selection processing.

[0059] The Engine Execution Management Unit 103 issues an execution command to a hardware resource to execute the engine selected by the Engine Selection Unit 102.

[0060] When it becomes necessary to interrupt execution data processing, the Engine Execution Management Unit 103 issues an interrupt command to an appropriate hardware resource. By issuing the interrupt command, the Engine Execution Management Unit 103 causes the execution engine to suspend execution data processing. Furthermore, when execution data processing is handed off to a takeover engine, the Engine Execution Management Unit 103 issues an execution request to an appropriate hardware resource, causing the takeover engine to take over execution data processing.

[0061] Furthermore, if it becomes possible to resume data processing in an interrupted state, the Engine Execution Management Unit 103 issues a resumption request to an appropriate hardware resource.

[0062] Additionally, the Engine Execution Management Unit 103 receives a completion notification and a step completion notification from a hardware resource.

[0063] Engine Execution Management Unit 103, together with Engine Execution Unit 104, constitutes a control unit. Furthermore, the processing performed by Engine Execution Management Unit 103 is control processing.

[0064] In the Engine execution unit 104, one execution unit is provided for each hardware resource.

[0065] In Fig. For clarity, only the CPU execution unit 1041 and the FPGA execution unit 1042 are shown in Figure 2.

[0066] The CPU execution unit 1041 is a function for executing an engine within the CPU 901.

[0067] Furthermore, the FPGA execution unit 1042 is a function for executing an engine within the FPGA 905.

[0068] Furthermore, before a takeover engine is selected, the Engine Execution Unit 104 generates custom program code for an execution engine by converting common program code (an Engine Implementation Code 132, described below) that is provided jointly for engines capable of performing execution data processing. The Engine Execution Unit 104 then instructs the execution engine to perform the execution data processing using the custom program code generated for the execution engine.

[0069] Meanwhile, if the takeover engine is selected, the Engine Execution Unit 104 generates custom program code for the takeover engine by converting the common program code. The Engine Execution Unit 104 then instructs the takeover engine to handle the execution data processing using the custom program code generated for the takeover engine.

[0070] The engine execution unit 104, together with the engine execution management unit 103, constitutes a control unit. The processing performed by the engine execution unit 104 corresponds to control processing.

[0071] The communication processing unit 105 transmits a result of data processing by an engine to the outside.

[0072] The communication processing unit 105 transmits the result of data processing, for example, to an actuator or a data processing execution unit corresponding to the data processing execution unit 100.

[0073] The Engine Execution Management Data 120 includes the Execution Data Processing List 121 and the Execution Standby Data Processing List 122.

[0074] The execution data processing list 121 is a list that displays executed data processing.

[0075] The execution standby data processing list 122 is a list that displays data processing that is waiting to be executed.

[0076] Details of the execution data processing list 121 and the execution standby data processing list 122 are explained below.

[0077] The engine software 130 contains the block function list 131 and the engine implementation code 132.

[0078] The Engine Implementation Code 132 is a code (program) for implementing each engine. The Engine Implementation Code 132 is configured by a multitude of code blocks (hereinafter also simply called blocks).

[0079] The block function list 131 specifies functions to implement processing of each block in relation to each block of the engine implementation code 132.

[0080] Details of the block function list 131 and the engine implementation code 132 are explained below.

[0081] The operation result storage memory 140 stores operation results from an engine.

[0082] Details of the Operation Result Storage Memory 140 are explained below.

[0083] Fig. 4 represents an example for engine list 110.

[0084] Engine list 110 specifies an engine ID of a selectable engine for each data processing ID. Additionally, for each engine ID, a level of precision, an execution hardware resource, and a processing time for each step are specified.

[0085] The accuracy level is represented by numerical values ​​from 0 to 100. The higher the numerical value, the higher the accuracy level.

[0086] The execution hardware resource is a hardware resource that is necessary to run an engine.

[0087] The processing time is the time required to execute each step. A dash (-) indicates that there is no corresponding step. A step is a partial data processing operation that constitutes the data processing. The number of steps to be executed varies depending on the engine. For example, in data processing 3, two steps are executed by engine 3A, while three steps are executed by engine 3B.

[0088] Fig. 5 represents an example of the execution data processing list 121.

[0089] Execution data processing list 121 manages execution data processing. That is, execution data processing list 121 manages data processing that is performed by engines.

[0090] In Fig. 5 is the hardware resource ID, an identifier for a hardware resource.

[0091] A hardware resource type is a type of hardware resource. Fig. 5 are according to Fig. 2 only the FPGA 905 and the CPU 901 are shown.

[0092] The data processing ID is an identifier for data processing currently being performed by a hardware resource. A data processing ID value of 0 indicates that no data processing is being performed by the relevant hardware resource.

[0093] The priority level is the priority of data processing that is currently in execution. If data processing is not in progress, the priority level is 0.

[0094] The engine ID is an identifier for an engine that performs data processing. If no data processing is performed, the engine ID value is 0.

[0095] A step number is an identifier for a step that is currently being executed. If no data processing is taking place, the step number value is 0.

[0096] A step start time is the time at which the execution of a step that is currently being executed begins. In the present embodiment, the step start time is specified by a numerical value (for example, a numerical value that increments every 1). 11 (increments in seconds).

[0097] A deadline is a timeframe indicating the completion point of data processing that is currently in progress. The deadline is also specified by a numerical value.

[0098] A switchover flag becomes TRUE when a switchover request exists for a data processing engine that is currently executing. When the switchover flag becomes TRUE, switchover processing of an engine is performed after the completion of a step that is currently executing.

[0099] A step completion notification flag becomes TRUE when the step completion notification is issued. The step completion notification is a message that informs the engine execution management unit 103 that the step execution has finished. When the step completion notification flag becomes TRUE, engine switchover processing is performed.

[0100] An interruptibility flag indicates whether a hardware resource tolerates interruptions of a step during execution. If the hardware resource tolerates interruptions of a step during execution, the interruptibility flag is set to TRUE. In the FPGA 905, interruptions of a step during execution are not tolerated; whereas in the CPU 901, interruptions of a step during execution are tolerated. Interruptions of a step during execution are implemented using a preemptive function in a task, by a real-time operating system (OS), and so on.

[0101] Fig. Figure 6 is an example of the execution standby data processing list 122.

[0102] The execution standby data processing list 122 manages data waiting for execution.

[0103] In Fig. 6 is the hardware resource ID, an identifier for a hardware resource.

[0104] The system will either enter the "Waiting for Step Completion" or "Executable" state. "Waiting for Step Completion" is a state where a step in another data processing system is awaiting completion (in an example of...). Fig. 6, Data Processing ID2). A state in which switching to another engine occurs after the completion of other data processing is "Waiting for Step Completion". "Executable State" is a state of waiting for the execution completion of other high-priority data processing.

[0105] A data processing ID is an identifier for data processing that is waiting to be executed.

[0106] A priority level is a priority level for data processing that is waiting to be executed.

[0107] An engine ID is an identifier for an engine that is scheduled to perform pending data processing.

[0108] A step number is an identifier for a step in data processing that is waiting to be executed. That is, the step number is an identifier for a step that is waiting to be executed.

[0109] A deadline is a time limit for the completion of a step awaiting execution. The deadline is also specified by a numerical value.

[0110] Step remaining processing time is the remaining processing time of a step awaiting execution. If execution is interrupted during a step, the step remaining processing time is used to determine the remaining processing time of the step awaiting execution. The step remaining processing time is also specified by a numerical value.

[0111] A switchover flag becomes TRUE when a switchover request exists for an engine with respect to pending data processing. When the switchover flag becomes TRUE, switchover processing by an engine is performed after the pending step has completed.

[0112] A step completion notification flag becomes TRUE when the step completion notification is issued. When the step completion notification flag becomes TRUE, the engine performs switchover processing.

[0113] Fig. Figure 7 shows an example of the block function list 131 and the engine implementation code 132.

[0114] Engine Implementation Code 132 is code (program) for implementing an engine. Engine Implementation Code 132 is configured by a variety of code blocks. It is program code (shared program code) that is made available to two or more engines (for example, Engine 1A and Engine 1B) that perform the same data processing. Engine Execution Management Unit 103 converts Engine Implementation Code 132 into individual program code for each engine (for example, for Engine 1A and for Engine 1B).

[0115] The block function list 131 is a list of functions for implementing the processing of each block of the engine implementation code 132.

[0116] In block function list 131, an engine ID is an identifier for an engine.

[0117] A block number is an identifier of a block contained in the engine implementation code 132.

[0118] A function address is the address of a function that is contained within a block.

[0119] Fig. Figure 8 shows an example of the operation result storage memory 140.

[0120] In the operation result storage memory 140, a dedicated storage area is secured for storing an operation result with respect to each data processing operation.

[0121] Even if an engine is switched to perform data processing during execution, it is possible to use an operating result of the engine before the switch by accessing a memory area of ​​relevant data processing by an engine after the switch. ***Explanation of the functional sequence***

[0122] An example of the functional sequences of the data processing execution unit 100 according to the present embodiment is then explained.

[0123] First, with reference to Fig. 9 to Fig. Section 14 explains the processing required to switch from a low-priority data processing engine to a low-accuracy engine based on the success of high-priority data processing.

[0124] Fig. Figure 9 shows an execution plan for data processing 2 and data processing 3.

[0125] It is assumed that data processing 2 is to be carried out by engine 2A. It is further assumed that data processing 3 is to be carried out by engine 3A.

[0126] It is possible to complete data processing 2 and data processing 3 within their respective deadlines.

[0127] It is assumed that Engine 2A, Engine 3A, Engine 1A, and Engine 2B, which are explained below, are all implemented by the CPU 901. This means that Engine 2A, Engine 3A, Engine 1A, and Engine 2B are not processed in parallel.

[0128] Fig. Figure 10 illustrates that data processing 1, which is a high-priority new data processing operation, occurs due to a random event during the execution of data processing 2. Since data processing 2 is executed when data processing 1 occurs, data processing 2 corresponds to the execution data processing operation. Furthermore, engine 2A corresponds to the execution engine. Engine 3A is assigned to data processing 3, however, data processing 3 has yet to be executed; therefore, data processing 3 corresponds to the assigned data processing operation.

[0129] Although data processing 2 is in the middle of execution, its execution is interrupted to prioritize data processing 1. Data processing 1 is assumed to be executed by engine 1A. Once data processing 1 is complete, data processing 2 will resume. Because data processing 1 has finished, if the remainder of data processing 2 is executed by engine 2A, data processing 3 will not complete within the allotted time.

[0130] Therefore, in the data processing unit 100 according to the present embodiment, an engine of at least either data processing 2 or data processing 3 is switched to an engine with a low degree of accuracy in order to reduce processing time.

[0131] Fig. Figure 11 shows an example of switching from engine 2 for data processing to engine 2B with a low precision level and switching from engine 3 for data processing to engine 3B with a low precision level. Engine 2B is an engine to take over the execution of data processing 2, which is execution data processing, from engine 2A, and engine 2B corresponds to the takeover engine.

[0132] Since the engine is switched to one with a lower accuracy level, processing time is reduced, and data processing 2 and data processing 3 are completed within the respective time limits.

[0133] Fig. Figure 12 shows an example where the CPU 901 and the FPGA 905 are available as hardware to implement an engine.

[0134] The following assumes that Engine 1A and Engine 2A are running on the FPGA 905. The following assumes that Engine 2B, Engine 2C, and Engine 3B are running on the CPU 901.

[0135] In Fig. In example 12, data processing 2 is performed by engine 2A on the FPGA 905, and data processing 3 is performed by engine 3B on the CPU 901. It is assumed that data processing 1 is re-executed due to a random event. In the example of Fig. 12 corresponds to each of the execution data processing operations, from data processing 2 and data processing 3. Data processing 1 corresponds to the new data processing. Furthermore, each of the execution engine operations, from engine 2A and engine 3B, corresponds to the execution engine.

[0136] Both Data Processing 1 and Data Processing 2 have a time limit of 500. Additionally, Data Processing 3 has a time limit of 1025. To complete Data Processing 1 within its time limit, it must be executed by Engine 1A running on the FPGA 905. Therefore, Data Processing 1 and Data Processing 2 compete with each other on the FPGA 905. Since Data Processing 1 has a higher priority, it cannot resume execution of Data Processing 2 on the FPGA 905. If Data Processing 2 resumes on the FPGA 905 after Data Processing 1 has finished, Data Processing 2 will not be completed within its time limit.

[0137] Therefore, the data processing execution facility 100 is looking for a combination of engines that are capable of completing data processing 2 and data processing 3 within the deadlines, even if data processing 1 is being executed.

[0138] For example, as in Fig. Figure 13 shows that the data processing execution unit 100 completes data processing 2 and data processing 3 within the time limits by instructing engine 2C to execute data processing 2 and engine 3B to execute data processing 3. In this example, engine 2C corresponds to the takeover engine.

[0139] In this case, Data Processing Execution Unit 100 suspends the execution of Data Process 2 on FPGA 905 and instructs Engine 1A to execute Data Process 1 on FPGA 905. While Engine 3B is executing Data Process 3 on CPU 901, Data Process 2 has a higher priority than Data Process 3. Therefore, Data Processing Execution Unit 100 suspends the execution of Data Process 3 on CPU 901 and instructs Engine 2C to take over the execution of Data Process 2. Then, Data Processing Execution Unit 100 instructs Engine 3B to execute the remainder of Data Process 3 after Data Process 2 has completed.

[0140] The planning described above makes it possible to complete data processing 1, data processing 2, and data processing 3 within their respective deadlines, as outlined in Fig. 13 shown.

[0141] Fig. 14 illustrates a Fig. 12 and Fig. 13. Planning procedure shown with regard to operations of components of the data processing execution unit 100.

[0142] When a data processing command is issued at time = 0 and execution of data processing 2 is instructed, the engine selection unit 102 selects an engine to execute data processing 2. In this case, the engine selection unit 102 selects engine 2A. Details of the engine selection algorithm of the engine selection unit 102 are explained below. Then, the engine selection unit 102 instructs the engine execution management unit 103 to execute data processing 2 using engine 2A (output of an execution request).

[0143] Since Engine 2A is running on the FPGA 905, Engine Execution Management Unit 103 requests FPGA Execution Unit 1042 to execute Data Processing 2 through Engine 2A (output of an execution instruction). FPGA Execution Unit 1042 is a function for executing an engine on the FPGA 905.

[0144] A data processing command is issued at time 25, and execution of data processing 3 is instructed. Engine selection unit 102 selects an engine to execute data processing 3. In this case, engine selection unit 102 selects engine 3B. Then, engine selection unit 102 requests engine execution management unit 103 to execute data processing 3 using engine 3B (output of an execution request).

[0145] Since Engine 3B runs on CPU 901, Engine Execution Management Unit 103 requests CPU Execution Unit 1041 to execute data processing 3 through Engine 3B (output of an execution instruction). CPU Execution Unit 1041 is a function for executing an engine on CPU 901.

[0146] If a data processing command is issued at time = 150 and the execution of data processing 1 is instructed, the engine selection unit 102 selects an engine to execute data processing 1. In this case, the engine selection unit 102 selects engine 1A. As can be seen from Fig. 12 and Fig. As described in section 13, data processing 2 will not be completed within the deadline if data processing 1 is performed on the FPGA 905.

[0147] Therefore, the data selection unit 102 is looking for a combination of engines that are capable of completing data processing 2 and data processing 3 within the deadlines, even if data processing 1 is in progress.

[0148] For data processing 2, engine 2B and engine 2C are selectable, and for data processing 3, engine 3B and engine 3C are selectable.

[0149] First, the engine selection unit 102 determines whether both data processing 2 and data processing 3 are completed within the deadlines when using engine 2B and engine 3B. In this case, it is assumed that data processing 2 is completed within the deadline, but data processing 3 is not.

[0150] Next, the engine selection unit 102 determines whether both data processing 2 and data processing 3 are completed within the deadlines when using engine 2B and engine 3C. In this case, it is assumed that data processing 2 is completed within the deadline, but data processing 3 is not.

[0151] First, the engine selection unit 102 determines whether both data processing 2 and data processing 3 are completed within the deadlines when using engine 2C and engine 3B. In this case, it is assumed that both data processing 2 and data processing 3 are completed within the deadlines.

[0152] Therefore, the engine selection unit 102 decides to switch the engine for data processing 2 to engine 2C.

[0153] Engine Selection Unit 102 requests Engine Execution Management Unit 103 to execute data processing 1 using Engine 1A (output of an execution request). Additionally, Engine Selection Unit 102 requests Engine Execution Management Unit 103 to switch the engine for data processing 2 from Engine 2A to Engine 2C (output of a switch request).

[0154] Each data processing operation is configured through a multitude of steps. At time 150, step 2 of data processing 2 is executed on the FPGA 905. The FPGA 905 cannot pause data processing before a step is complete. Therefore, it is necessary to wait for step 2 of data processing 2 to finish so that data processing 1 can be executed by engine 1A.

[0155] When the execution of step 2 of data processing 2 is complete, the FPGA execution unit 1042 notifies the engine execution management unit 103 of the completion of step 2 (issuance of a step completion notification).

[0156] Since step 2 is complete, the Engine Execution Management Unit 103 requests the FPGA Execution Unit 1042 to execute data processing 1 through Engine 1A (output of an execution command).

[0157] Then, the engine execution management unit 103 requests the CPU execution unit 1041 to suspend the execution of engine 3B so that data processing 2 can be carried out by engine 2C (output of a suspend instruction). It is possible to suspend an engine without waiting for the completion of a step by CPU 901.

[0158] Then, the Engine Execution Management Unit 103 requests the CPU Execution Unit 1041 to cause the data processing 2 of step 3 to be carried out by the Engine 2c (output of an execution instruction).

[0159] Then, when data processing 2 is completed by engine 2C, the CPU execution unit 1041 notifies the engine execution management unit 103 of the completion of data processing 2 (issuance of a completion notification).

[0160] Since data processing 2 is complete, the engine execution management unit 103 requests the CPU execution unit 1041 to resume data processing 3 by the engine 3B (issuing a resume request).

[0161] When data processing 1 is completed by engine 1A, the FPGA execution unit 1042 notifies the engine execution management unit 103 of the completion of data processing 1 (issuance of a completion notification).

[0162] When data processing 3 is completed by engine 3B, the CPU execution unit 1041 notifies the engine execution management unit 103 of the completion of data processing 3 (issuance of a completion notification).

[0163] Furthermore, illustrate Fig. 25 to Fig. 31 values ​​of an execution data processing list and values ​​of an execution standby data processing list at each time point from (1) to (7) in Fig. 14.

[0164] A pseudo-step start time is entered in "Step Start Time" of the "H / W Resource ID:2" in Fig. 29 is set. This means that the pseudo-start time is set so that a remaining time can be calculated from the current time (current time (350) - step 1 processing time (200) + step remaining processing time (25) = 175).

[0165] Next, with reference to Fig. 15 to Fig. 17. An overview of engine selection processing is explained by the engine selection unit 102.

[0166] Engine selection unit 102 selects a combination of suitable engines based on a selection criterion as follows: 1) All new and existing data processing (execution data processing and assigned data processing) will be completed within the respective deadlines. 2) An engine with a higher degree of operational accuracy is assigned data processing with a higher priority.

[0167] Fig. Figure 15 shows that data processing 3 takes place in a state in which engines are assigned to data processing 1, data processing 2, data processing 4 and data processing 5.

[0168] In Fig. The 15 are engines surrounded by double frames, engines assigned to data processing. That is, engine 1A is assigned to data processing 1. Engine 2B is assigned to data processing 2. Engine 4B is assigned to data processing 4. Engine 5A is assigned to data processing 5.

[0169] The in Fig. The area 15, outlined by a dashed line, is a region of first-combination extraction processing, which is explained further below. Since it is determined that data processing 4 will not complete within the time limit even when using engine 4A, engine 4A is not included in the first-combination extraction processing region.

[0170] When data processing 3 takes place, the engine selection unit 102 selects a combination of engines, each exhibiting the highest degree of accuracy, from combinations of engines capable of completing data processing 3, data processing 4, and data processing 5 within their respective time limits.

[0171] In particular, the Engine Selection Unit 102 determines whether each of the data processing operations 3, 4, and 5 has been completed within the respective time limit by a combination of Engine 3A, Engine 4B, and Engine 5A. If each of the data processing operations 3, 4, and 5 has been completed within the respective time limit, the Engine Selection Unit 102 selects Engine 3A as the engine to execute Data Processing 3.

[0172] If each of the data processing operations 3, 4, and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 3, 4, and 5 is completed within the respective time limit by switching an engine for data processing 5 to engine 5B.

[0173] When each of the data processing operations 3, 4 and 5 is completed within the respective time limits, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3 and to switch the engine to execute data processing 5 to engine 5B.

[0174] If each of the data processing operations 3, 4, and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 3, 4, and 5 is completed within the respective time limit by switching the engine for data processing 5 to engine 5C.

[0175] When each of the data processing operations 3, 4 and 5 is completed within the respective time limit, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3 and to switch the engine to execute data processing 5 to engine 5C.

[0176] If each of the data processing operations 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 3, 4 and 5 is completed within the respective time limit by a combination of engine 3B, engine 4B and engine 5A.

[0177] When each of the data processing operations 3, 4 and 5 is completed within their respective time limits, the engine selection unit 102 selects engine 3B as the engine to execute data processing 3.

[0178] If each of the data processing operations 3, 4 and 5 is completed within the respective time period, the engine selection unit 102 performs processing similar to that performed by engine 3A.

[0179] If each of the tasks performed by Data Processing 3, Data Processing 4 and Data Processing 5 is not completed within the respective time limit, even by a combination of Engine 3B, Engine 4B and Engine 5C, Engine Selection Unit 102 determines whether each of the tasks performed by Data Processing 3, Data Processing 4 and Data Processing 5 is completed within the respective time limit, by a combination of Engine 3C, Engine 4B and Engine 5A.

[0180] If each of the data processing operations 3, 4 and 5 is completed within the respective time limit, the engine selection unit 102 selects engine 3C as the engine to execute data processing 3.

[0181] If each of the data processing operations 3, 4 and 5 is completed within the respective time period, the engine selection unit 102 performs processing similar to that performed by engine 3A and engine 3B.

[0182] If each of the operations performed by Engine 3, Engine 4 and Engine 5 is not completed within the respective time limit, even by a combination of Engine 3C, Engine 4B and Engine 5C, Engine Selection Unit 102 performs a second combination extraction operation.

[0183] Fig. Figure 16 shows an area of ​​second-combination extraction processing (first time) by the engine selection unit 102.

[0184] If each of the tasks performed by data processing 3, data processing 4 and data processing 5 is not completed within the respective time limit, even by the combination of engine 3C, engine 4B and engine 5C, the engine selection unit 102 determines whether each of the tasks performed by data processing 2, data processing 3, data processing 4 and data processing 5 is completed within the respective time limit when the engine for data processing 2 is switched to engine 2C.

[0185] That is, the engine selection unit 102 determines whether each of the data processing operations 2, 3, 4 and 5 is completed within the respective time limit, by a combination of engine 2C, engine 3A, engine 4A and engine 5A.

[0186] When each of the data processing operations 2, 3, 4 and 5 is completed within the respective time limit, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3, switch the engine to execute data processing 2 to engine 2C and switch the engine to execute data processing 4 to engine 4A.

[0187] If each of the data processing operations 2, 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 2C, engine 3A, engine 4A and engine 5B.

[0188] When each of the data processing operations 2, 3, 4 and 5 is completed within the respective time limit, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3, switch the engine to execute data processing 2 to engine 2C, switch the engine to execute data processing 4 to engine 4A and switch the engine to execute data processing 5 to engine 5B.

[0189] If each of the data processing operations 2, 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 2C, engine 3A, engine 4A and engine 5C.

[0190] When each of the data processing operations 2, 3, 4 and 5 is completed within the respective time period, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3, switch the engine to execute data processing 2 to engine 2C, switch the engine to execute data processing 4 to engine 4A and switch the engine to execute data processing 5 to engine 5C.

[0191] If each of the data processing operations 2, 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 2C, engine 3A, engine 4B and engine 5A.

[0192] The engine selection unit 102 then checks the following combinations in succession: Engine 2C, Engine 3A, Engine 4B and Engine 5B; Engine 2C, Engine 3A, Engine 4B and Engine 5C; Engine 2C, Engine 3B, Engine 4A and Engine 5A; Engine 2C, Engine 3B, Engine 4A and Engine 5B; Engine 2C, Engine 3B, Engine 4A and Engine 5C; Engine 2C, Engine 3B, Engine 4B and Engine 5A; Engine 2C, Engine 3B, Engine 4B and Engine 5B; Engine 2C, Engine 3B, Engine 4B and Engine 5C; Engine 2C, Engine 3C, Engine 4A and Engine 5A; Engine 2C, Engine 3C, Engine 4A and Engine 5B; Engine 2C, Engine 3C, Engine 4A and Engine 5C; Engine 2C, Engine 3C, Engine 4B and Engine 5A; Engine 2C, Engine 3C, Engine 4B and Engine 5B, and Engine 2C, Engine 3C, Engine 4B and Engine 5C.

[0193] If each of the processes by data processing 2, data processing 3, data processing 4 and data processing 5 is not completed within the respective time limit by a combination of engine 2C, engine 3C, engine 4B and engine 5C, the engine selection unit 102 extends a portion of the second combination extraction processing to an engine for data processing 1.

[0194] Fig. Figure 17 shows an area of ​​second-time combination extraction processing by the engine selection unit 102.

[0195] If each of the data processing operations 2, 3, 4 and 5 is not completed within the respective time limit by a combination of Engine 2C, Engine 3C, Engine 4B and Engine 5C, the Engine Selection Unit 102 determines whether each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time limit, in a case where the engine for Data Processing 1 has switched to Engine 1B.

[0196] That is, the engine selection unit 102 determines whether each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 1B, engine 2A, engine 3A, engine 4A and engine 5A.

[0197] When each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time period, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3, switch the engine to execute data processing 1 to engine 1B and switch the engine to execute data processing 4 to engine 4A.

[0198] If each of the data processing operations 1, 2, 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 1B, engine 2A, engine 3A, engine 4A and engine 5B.

[0199] When each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time period, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3, switch the engine to execute data processing 1 to engine 1B, switch the engine to execute data processing 4 to engine 4A and switch the engine to execute data processing 5 to engine 5B.

[0200] If each of the data processing operations 1, 2, 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 1B, engine 2A, engine 3A, engine 4A and engine 5C.

[0201] When each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time limit, the engine selection unit 102 decides to select engine 3A as the engine to execute data processing 3, switch the engine to execute data processing 1 to engine 1B, switch the engine to execute data processing 4 to engine 4A and switch the engine to execute data processing 5 to engine 5C.

[0202] If each of the data processing operations 1, 2, 3, 4 and 5 is not completed within the respective time limit, the engine selection unit 102 determines whether each of the data processing operations 1, 2, 3, 4 and 5 is completed within the respective time limit by a combination of engine 1B, engine 2A, engine 3B, engine 4A and engine 5A.

[0203] The engine selection unit 102 then checks the following combinations in succession: Engine 1B, Engine 2A, Engine 3A, Engine 4B and Engine 5A; Engine 1B, Engine 2A, Engine 3A, Engine 4B and Engine 5B; Engine 1B, Engine 2A, Engine 3A, Engine 4B and Engine 5C; Engine 1B, Engine 2A, Engine 3B, Engine 4A and Engine 5A; Engine 1B, Engine 2A, Engine 3B, Engine 4A and Engine 5B; Engine 1B, Engine 2A, Engine 3B, Engine 4A and Engine 5C; Engine 1B, Engine 2A, Engine 3B, Engine 4B and Engine 5A; Engine 1B, Engine 2A, Engine 3B, Engine 4B and Engine 5B; Engine 1B, Engine 2A, Engine 3B, Engine 4B and Engine 5C; Engine 1B, Engine 2A, Engine 3C, Engine 4A and Engine 5A; Engine 1B, Engine 2A, Engine 3C, Engine 4A and Engine 5B; Engine 1B, Engine 2A, Engine 3C, Engine 4A and Engine 5C; Engine 1B, Engine 2A, Engine 3C, Engine 4B and Engine 5A; Engine 1B, Engine 2A, Engine 3C, Engine 4B and Engine 5B; Engine 1B, Engine 2A, Engine 3C, Engine 4B and Engine 5C; Engine 1B, Engine 2B, Engine 3A, Engine 4A and Engine 5A; Engine 1B, Engine 2B, Engine 3A, Engine 4A and Engine 5B; Engine 1B, Engine 2B, Engine 3A, Engine 4A and Engine 5C; Engine 1B, Engine 2B, Engine 3A, Engine 4B and Engine 5A; Engine 1B, Engine 2B, Engine 3A, Engine 4B and Engine 5B; Engine 1B, Engine 2B, Engine 3A, Engine 4B and Engine 5C; Engine 1B, Engine 2B, Engine 3B, Engine 4A and Engine 5A; Engine 1B, Engine 2B, Engine 3B, Engine 4A and Engine 5B; Engine 1B, Engine 2B, Engine 3B, Engine 4A and Engine 5C; Engine 1B, Engine 2B, Engine 3B, Engine 4B and Engine 5A; Engine 1B, Engine 2B, Engine 3B, Engine 4B and Engine 5B; Engine 1B, Engine 2B, Engine 3B, Engine 4B and Engine 5C; Engine 1B, Engine 2B, Engine 3C, Engine 4A and Engine 5A; Engine 1B, Engine 2B, Engine 3C, Engine 4A and Engine 5B; Engine 1B, Engine 2B, Engine 3C, Engine 4A and Engine 5C; Engine 1B, Engine 2B, Engine 3C, Engine 4B and Engine 5A; Engine 1B, Engine 2B, Engine 3C, Engine 4B and Engine 5B; Engine 1B, Engine 2B, Engine 3C, Engine 4B and Engine 5C; Engine 1B, Engine 2C, Engine 3A, Engine 4A and Engine 5A; Engine 1B, Engine 2C, Engine 3A, Engine 4A and Engine 5B; Engine 1B, Engine 2C, Engine 3A, Engine 4A and Engine 5C; Engine 1B, Engine 2C, Engine 3A, Engine 4B and Engine 5A; Engine 1B, Engine 2C, Engine 3A, Engine 4B and Engine 5B; Engine 1B, Engine 2C, Engine 3A, Engine 4B and Engine 5C; Engine 1B, Engine 2C, Engine 3B, Engine 4A and Engine 5A; Engine 1B, Engine 2C, Engine 3B, Engine 4A and Engine 5B; Engine 1B, Engine 2C, Engine 3B, Engine 4A and Engine 5C; Engine 1B, Engine 2C, Engine 3B, Engine 4B and Engine 5A; Engine 1B, Engine 2C, Engine 3B, Engine 4B and Engine 5B; Engine 1B, Engine 2C, Engine 3B, Engine 4B and Engine 5C; Engine 1B, Engine 2C, Engine 3C, Engine 4A and Engine 5A; Engine 1B, Engine 2C, Engine 3C, Engine 4A and Engine 5B; Engine 1B, Engine 2C, Engine 3C, Engine 4A and Engine 5C; Engine 1B, Engine 2C, Engine 3C, Engine 4B and Engine 5A; Engine 1B, Engine 2C, Engine 3C, Engine 4B and Engine 5B, and Engine 1B, Engine 2C, Engine 3C, Engine 4B and Engine 5C.

[0204] If a suitable combination of engines is not achieved using the above-mentioned method, the engine selection unit 102 performs a predetermined error handling.

[0205] Next, an example of operations of the engine selection unit 102 will be given with reference to the Fig. 18 to Fig. 20 explained.

[0206] Fig. Figure 18 shows a general operating sequence of the Engine Selection Unit 102.

[0207] Fig. 19 shows a detail of the in Fig. 18 shown “first combination extraction processing” (step S11).

[0208] Fig. 20 shows a detail of the in Fig. 18 shown “second combination extraction processing” (step S14).

[0209] If new data processing (for example, the one in Fig. 15. Data processing 3) is carried out, the process begins in Fig. 18 illustrated operational sequences.

[0210] In step S11, the engine selection unit 102 performs the first combination extraction processing.

[0211] One detail of the first-combination processing is illustrated by... Fig. 19 explained.

[0212] Next, in step S12, the engine selection unit 102 determines whether a combination will be extracted through first-combination extraction processing.

[0213] If the combination is extracted (YES in step S12), processing proceeds to step S17.

[0214] On the other hand, if the combination is not extracted (NO in step S12), the engine selection unit 102 determines whether the priority level of the new data processing is the highest (step S13). That is, the engine selection unit 102 determines whether the priority level of the new data processing is higher than a priority level of data processing to which an engine has already been assigned.

[0215] If the priority level of the new data processing is the highest (YES in step S13), processing continues with step S16, as the second combination extraction processing cannot be performed.

[0216] Meanwhile, if the priority level of the new data processing is not the highest priority level (NO in step S13), processing continues with step S14.

[0217] In step S14, the engine selection unit 102 performs the second combination extraction processing.

[0218] One detail of the second combination processing is described with reference to Fig. 20 described.

[0219] Next, in step S15, the engine selection unit 102 determines whether a combination has been extracted by the second combination extraction processing.

[0220] If the combination is extracted (YES in step S15), processing continues with step S17.

[0221] If the combination is not extracted (NO in step S15), processing continues with step S16.

[0222] In step S16, the engine selection unit 102 performs predetermined error processing.

[0223] For example, the engine selection unit 102 reports an error as the error handling unit and safely suspends the data processing execution unit 100.

[0224] In step S17, the engine selection unit 102 issues an execution request.

[0225] As in Fig. As shown in Figure 14, it may be applicable for the engine selection unit 102 to issue only one execution request in response to a situation, or to issue one execution request and one toggling request.

[0226] Next, the details of the first-combination extraction processing will be discussed with reference to Fig. 19 explained.

[0227] In step S1101, the engine selection unit 102 selects an engine with the highest level of accuracy from among engines that comply with the new data processing.

[0228] Engine selection unit 102 refers to engine list 110 and selects the engine with the highest degree of accuracy according to the new data processing.

[0229] The engine selected in step S1101 is referred to as a selected engine.

[0230] Next, in step S1102, if the new data processing is performed using a selected engine, the engine selection unit 102 determines whether the new data processing is completed within a time limit for the new data processing.

[0231] If the new data processing is completed within the time limit for the new data processing (YES in step S1102), the processing continues with step S1103.

[0232] Meanwhile, if the new data processing is not completed within the time limit for the new data processing (NO in step S1102), the processing will continue with step S1107.

[0233] In step S1103, the engine selection unit 102 records the selected engine as a combination extraction result in a previously determined memory area.

[0234] In step S1104, the engine selection unit 102 determines whether there is data processing with a lower priority level than that of the new data processing in data processing to which engines have already been assigned.

[0235] If there is a data processing engine with a lower priority level than the new data processing engine (YES in step S1104), the engine selection unit 102 in step S1106 designates an engine for data processing of the next lower priority level as a selected engine.

[0236] Then the engine selection unit 102 processes step S1102 and, after step S1102, performs data processing of the next lower priority level.

[0237] Meanwhile, if there is no data processing of a lower priority than that of the new data processing (NO in step S1104), the engine selection unit 102 determines in step S1105 that there is a suitable combination of engines.

[0238] As a result, the engine selection unit 102 returns in step S17 in Fig. 18. Execute a request (and a switchover request) based on an extraction result recorded in step S1103.

[0239] If the new data processing is not completed within the time limit for the new data processing (NO in step S1102), the engine selection unit 102 determines in step S1107 whether there is an engine with a lower level of accuracy available for the new data processing in addition to the selected engine.

[0240] If the engine with the next lower accuracy level exists (YES in step S1107), the engine selection unit 102 in step S1108 sets the engine with the next lower accuracy level as the newly selected engine.

[0241] Then the engine selection unit 102 processes step S1102 and after step S1102 using the newly selected engine.

[0242] If the engine with the next lower accuracy level is not available (NO in step S1107), the engine selection unit 102 determines in step S1109 whether a currently selected engine is an engine for the new data processing.

[0243] If the currently selected engine is the engine for the new data processing (YES in step S1109), the engine selection unit 102 determines in step S1110 that there is no suitable combination of engines.

[0244] Meanwhile, if the currently selected engine is not the engine for the new data processing (NO in step S1109), the engine selection unit 102, in step S1111, designates as the selected engine an engine recorded as a combination extraction result of data processing with the next higher priority level, and performs processing from and after step S1107. During processing from and after step S1107, the engine selection unit 102 attempts to extract a combination of engines capable of completing the data processing of the next higher priority level and the data processing of a priority level below the next higher priority level within deadlines in a state where the accuracy level of the selected engine for the data processing of the next higher priority level is reduced.As described above, the engine selection unit 102, by repeating the steps described above until it becomes JA in S1109, assigns an engine with the higher accuracy level of data processing with the higher priority level and extracts a combination of engines to complete by deadlines in the range of in . Fig. to achieve the combination extraction processing described in section 15.

[0245] Next, with reference to Fig. 20 explains the details of the second combination extraction processing.

[0246] In step S1301, the engine selection unit 102 specifies as a selected engine an engine that performs data processing of the highest priority level alongside the new data processing.

[0247] Next, in step S1302, the engine selection unit 102 determines whether there is an engine with a lower accuracy level in addition to the selected engine.

[0248] If the engine with the lower accuracy level is present next to the selected engine, processing continues with step S1306; whereas if the engine with the lower accuracy level is not present next to the selected engine, processing continues with step S1303.

[0249] In step S1303, the engine selection unit 102 determines whether the priority level of the new data processing is the highest.

[0250] If the priority level of the new data processing is the highest, processing continues with step S1304.

[0251] Meanwhile, if the priority level of the new data processing is not the highest priority level, processing continues with step S1305.

[0252] In step S1304, the engine selection unit 102 determines that there is no suitable combination of engines.

[0253] In step S1305, the engine selection unit 102 designates an engine, recorded as a combination extraction result of data processing of the next higher priority level, as a selected engine and performs the processing of step S1302 and after step S1302. During the processing of step S1302 and after step S1302, the engine selection unit 102 attempts to extract a combination of engines capable of completing the data processing of the next higher priority level and the data processing of a priority level below the next higher priority level within deadlines in a state where the accuracy level of the selected engine for data processing of the next higher priority level is reduced.

[0254] If a record of the extraction result is not available, the engine selection unit 102 resets the currently selected engine to the selected engine.

[0255] In step S1306, the engine selection unit 102 designates the engine with the next lowest accuracy level as a newly selected engine.

[0256] Then, the engine selection unit 102 processes step S1307 and after step S1307 using the newly selected engine.

[0257] In step S1307, the engine selection unit 102 determines whether it is possible to complete the new data processing within a timeframe using the currently selected engine.

[0258] If the new data processing is completed within the deadline, the processing proceeds to step S1308. If the new data processing is not completed within the deadline, the processing proceeds to step S1302.

[0259] In step S1308, the engine selection unit 102 records the selected engine as a combination extraction result in a previously determined memory area.

[0260] Next, in step S1309, the engine selection unit 102 determines whether there is data processing of a lower priority level than that of the new data processing.

[0261] If a data processing operation with a lower priority than the new data processing operation exists, processing proceeds to step S1310. Conversely, if a data processing operation with a lower priority than the new data processing operation does not exist, processing proceeds to step S1311.

[0262] In step S1310, engine selection unit 102 designates an engine with the highest accuracy level for processing the data of the next lower priority level as the selected engine. Then, engine selection unit 102 performs processing from step S1307 and after step S1307 with respect to the data processing of the next lower priority level and the newly selected engine.

[0263] In step S1311, the engine selection unit 102 definitively determines that there is no suitable combination of engines.

[0264] Next, with reference to Fig. 21 to Fig. 23 describes an example of operations of the engine execution management unit 103 according to the present embodiment.

[0265] In step S21, the engine execution management unit 103 waits to receive any of the following: an execution request, a switchover request, a step completion notification, and an execution completion notification.

[0266] When any of the execution request, switchover request, step completion notification, and execution completion notification are received, the Engine Execution Management Unit 103 determines which of the execution request, switchover request, step completion notification, and execution completion notification are received.

[0267] When the execution request is received, processing proceeds to step S23. When the step completion notification is received, processing continues to Fig. 22 to step S33. When the execution completion notification is received, processing continues in Fig. 22 to step S37. When the switching request is received, processing continues in Fig. 23 to step S41.

[0268] In step S23, the engine execution management unit 103 determines whether a hardware resource for implementing an engine, for which execution is requested by an execution request, is currently running.

[0269] If the hardware resource is currently running, processing continues with step S26. Meanwhile, if the hardware resource is not currently running, processing proceeds to step S24.

[0270] In step S24, the engine execution management unit 103 registers the execution request in the execution data processing list 121.

[0271] Next, in step S25, the Engine Execution Management Unit 103 issues an execution command to the Engine Execution Unit 104.

[0272] Step S26 determines whether a priority level of data processing specified in the execution request is higher than a priority level of data processing performed by the hardware resource that was determined to be operated in step S23.

[0273] If the priority level of the data processing specified in the execution request is higher, processing proceeds to step S27. Conversely, if the priority level of the data processing specified in the execution request is not higher, processing continues with step S32.

[0274] In step S27, the engine execution management unit 103 determines whether an interrupt tolerance flag of a relevant hardware resource in the execution data processing list 121 is TRUE.

[0275] If the interrupt tolerance flag is TRUE, processing proceeds to step S28.

[0276] Meanwhile, if the interrupt tolerance flag is FALSE, processing proceeds to step S30.

[0277] In step S28, the engine execution management unit 103 issues a break command to the engine execution unit 104.

[0278] Next, in step S29, the engine execution management unit 103, which is interrupted, that is, data processing is the subject of the interrupt request in step S28, registers in the execution standby data processing list 122.

[0279] In step S30, the engine execution management unit 103 sets a step completion notification flag for a relevant hardware resource in the execution data processing list 121 to TRUE.

[0280] Next, in step S31, the engine execution management unit 103 registers the data processing specified in the execution request as "Waiting for step completion" in the execution standby data processing list 122.

[0281] In step S32, the engine execution management unit 103 registers the data processing specified in the execution request as an "executable state" in the execution standby data processing list 122.

[0282] As a result of the determination in step S22 in Fig. 21, when it is determined that a step completion notification has been received, the engine execution management unit 103 sets a step completion notification flag in the execution data processing list 121 with respect to data processing whose steps have been completed, in step S33 in Fig. 22 on FALSE.

[0283] Next, in step S34, the engine execution management unit 103 changes data processing in a "waiting for step completion" state to an "executable state" in the execution standby data processing list 122, with respect to data processing whose steps have been completed.

[0284] Next, in step S35, the engine execution management unit 103 determines whether a toggle flag in the execution data processing list 121 is TRUE with respect to the data processing whose steps have been completed.

[0285] If the switching flag is TRUE, processing proceeds to step S37.

[0286] If the switching flag is FALSE, processing proceeds to step S36.

[0287] In step S36, the engine execution management unit 103 adds the data processing whose steps have been completed to the execution standby data processing list 122.

[0288] In step S37, the engine execution management unit 103 determines whether data processing is in the "executable state" in the execution standby data processing list 122.

[0289] If data processing is in the "executable state", processing continues with step S38.

[0290] Meanwhile, if data processing is not in the "executable state", processing continues with step S39.

[0291] In step S38, the engine execution management unit 103 registers data processing of the highest priority in the execution standby data processing list 122, in the execution data processing list 121, and deletes said data processing from the execution standby data processing list 122.

[0292] Then the processing continues with step S25 in Fig. Continued in 21.

[0293] In step S39, the Engine Execution Management Unit 103 sets the Execution Data Processing List 121 to "Not yet in operation." "Not yet in operation" means that data processing is not yet being performed on the specified hardware resource. Specifically, the Engine Execution Management Unit 103 performs processing that sets a data processing ID, etc., in the Execution Data Processing List 121 to 0, as defined in section 0042.

[0294] Then the processing continues with step S21 in Fig. Continued in 21.

[0295] As a result of the determination of step S22 in Fig. 21, when it is determined that a switchover request has been received, the engine execution management unit 103 determines in step S41 in Fig. 23, whether data processing which is the subject of the switchover request is being carried out.

[0296] When the data processing that is the subject of the switchover request is executed, the processing proceeds to step S42.

[0297] Meanwhile, if the data processing that is the subject of the switchover request is not carried out, processing continues with step S44.

[0298] In step S42, the engine execution management unit 103 sets a toggle flag and a step completion notification flag for data processing that is the subject to TRUE in the execution data processing list 121.

[0299] Next, in step S43, the Engine Execution Management Unit 103 registers an engine specified in the switchover request in the Execution Standby Data Processing List 122 in a row of a relevant hardware list.

[0300] Then the processing continues with step S21 in Fig. Continued in 21.

[0301] In step S44, the engine execution management unit 103 determines whether data processing that is the subject of the switchover request is in an interrupted state during the execution of steps.

[0302] If the data processing that is the subject of the switchover request is in the interrupted state during the execution of the steps, the processing continues with step S46.

[0303] Meanwhile, if the data processing that is the subject of the switchover request is not in the interrupted state during the execution of the steps, the processing continues with step S45.

[0304] In step S46, the engine execution management unit 103 sets a toggle flag and a step completion notification flag for data processing that is interrupted during execution of the steps to TRUE in the execution standby data processing list 122.

[0305] In step S45, the engine execution management unit 103 deletes a data processing engine that is the subject of the switchover request from the execution standby data processing list 122 and registers an engine specified in the switchover request in the execution standby data processing list 122.

[0306] Then the processing continues with step S21 in Fig. Continued in 21.

[0307] Next, with reference to Fig. 24 describes an example of operations of the engine execution unit 104.

[0308] In step S51, the engine execution unit 104 performs a step that is an execution item.

[0309] Next, when the step performed in step S51 is completed, the engine execution unit 104 determines in step S52 whether said step is the last step of data processing.

[0310] If this is the last step, processing continues with step S53.

[0311] If this step is not the last step, processing continues with step S54.

[0312] In step S53, the engine execution unit 104 issues an execution completion notification to the engine execution management unit 103.

[0313] In step S54, the engine execution unit 104 determines whether a step completion notification flag of the data processing that is the subject is TRUE in the execution data processing list 121.

[0314] If the step completion notification flag is TRUE, processing proceeds to step S55.

[0315] If the step completion notification flag is FALSE, processing proceeds to step S56.

[0316] In step S55, the engine execution unit 104 issues a step completion notification to the engine execution management unit 103.

[0317] In step S56, the engine execution management unit 104 advances the step of the execution item by one and updates a step number of the execution data processing list 121.

[0318] Then we continued the processing with step S51. *** Description of the effect of an embodiment ***

[0319] As described above, according to the present embodiment, even if new data processing occurs due to a random event, it is possible to complete both the new and existing data processing within the respective timeframes. Therefore, according to the present embodiment, it is possible to flexibly schedule data processing in response to a change in circumstances. Second embodiment

[0320] The present embodiment mainly describes differences compared to the first embodiment.

[0321] Fig. Figure 32 shows an example of a functional configuration of a data processing execution unit 100 according to the first embodiment.

[0322] Compared to Fig. 2 are in Fig. 32. A conversion processing unit 106, a conversion processing time list 150, and an engine interface list 160 were added. The engine interface list 160 is also referred to as the engine I / F list 160.

[0323] The other elements are the same as in Fig. 2 shown.

[0324] The conversion processing unit 106 is implemented by a program, as is the case with the data processing registration unit 101, etc. The program for implementing a function of the conversion processing unit 106 is executed by a processing circuit 900, as is the case with the data processing registration unit 101, etc.

[0325] If interface specifications differ between engines, the conversion processing unit 106 performs conversion processing to absorb these differences. More specifically, if the interface specifications differ between an execution engine (e.g., Engine 5A) and a takeover engine (e.g., Engine 5B), the conversion processing unit 106 performs conversion processing to absorb these differences.

[0326] Fig. Figure 33 illustrates a time sequence of conversion processing by the conversion processing unit 106.

[0327] Fig. Figure 34 illustrates a time sequence of conversion processing by the conversion processing unit 106.

[0328] Fig. Figure 33 illustrates an example where Engine 5A, Engine 5B, and Engine 5C execute steps contained in Data Processing 5. When Engine 5A executes Data Processing 5, steps 1 through 4 are performed. When Engine 5B executes Data Processing 5, steps 1 through 4 are also performed. When Engine 5C executes Data Processing 5, steps 1 through 2 are performed.

[0329] Furthermore, as in Fig. Figure 34 shows the number of variable values ​​and variable types used for arithmetic operations between Engine 5A, Engine 5B, and Engine 5C. The number of variable values ​​and variable types for each of these engines are defined in Engine Interface List 160.

[0330] If all steps of data processing 5 are performed by the same engine, conversion processing by conversion processing unit 106 is unnecessary. However, if preceding and subsequent steps are performed by different engines, such that step 1 is performed by engine 5A and step 2 by engine 5B, conversion processing by conversion processing unit 106 is necessary. That is, conversion processing unit 106 must convert the result of an operation in a preceding step into the number of variable values ​​and variable types that can be used by an engine to perform a subsequent step.

[0331] For example, it is assumed that a preceding step is performed by engine 5A, and a subsequent step is performed by engine 5B.

[0332] In this case, an operation result storage memory 140 stores the result of an operation of engine 5A, as shown in Fig. Figure 34 shows four values ​​of val1 in a floating-point form and four values ​​of val2 in a floating-point form.

[0333] As shown in Engine Interface List 160, Engine 5B uses four values ​​for val1 and three values ​​for val2, and the variable type is a 32-bit fixed point.

[0334] Engine execution management unit 103 calls conversion processing unit 106 before the latter calls an implementation function (unique program code for Engine B) of the step executed by Engine 5B. Conversion processing unit 106 converts a result of an operation of Engine 5A, stored in the operation result storage memory 140, to conform to the interface specifications of Engine 5B.

[0335] Specifically, as in Fig. As shown in Figure 34, the conversion processing unit 106 converts the types val1 and val2 to 32-bit fixed points and decrements the value of val2 by 1. As a result, it is possible for the engine 5B to use the result of the operation, which is stored in the operation result storage memory 140.

[0336] Since the conversion processing is performed by the conversion processing unit 106 as explained above when switching between engines with different interface specifications, the engine selection unit 102 must determine whether it is possible to complete execution data processing within a timeframe, including the time required for conversion processing by the conversion processing unit 106.

[0337] That is, in the present embodiment, the engine selection unit 102 selects as a takeover engine an engine that is capable of completing execution data processing, new data processing and assigned data processing within the respective time limits, including time required for conversion processing.

[0338] The time required for conversion processing by the conversion processing unit 106 is specified in the conversion processing time list 150.

[0339] Fig. Figure 35 shows an example of the conversion processing time list 150. Each numeric value indicates a time required for conversion processing. Additionally, each numeric value is identified by a counter value, as is the case with the step start time in Fig. 5 is the case.

[0340] In the example of Fig.35, in a case of switching from engine 5A to engine 5B, the time required for conversion processing by conversion processing unit 106 is 3.

[0341] The conversion processing unit 106 receives a time required for conversion processing by the conversion processing unit 106 by referencing the conversion processing time list 150.

[0342] As described, the present embodiment determines whether each of the new and existing data processing operations is completed within the respective time frame, including the time required for conversion processing. Therefore, according to the present embodiment, even if the interface specifications of an engine before switching and an engine after switching differ, it is possible to complete each of the new and existing data processing operations within the respective time frame.

[0343] The above statements describe the embodiments of the present invention; however, it is also possible to combine and implement these two embodiments.

[0344] At the same time, it is possible to partially implement one of these two embodiments.

[0345] Otherwise, it is possible to partially combine and implement these two embodiments.

[0346] The present invention is not limited to the present embodiments, and various modifications are possible as required. Reference symbol list

[0347] 100: Data processing execution unit; 101: Data processing registration unit; 102: Engine selection unit; 103: Engine execution management unit; 104: Engine execution unit; 105: Communication processing unit; 106: Conversion processing unit; 110: Engine list; 120: Engine execution management data; 121: Execution data processing list; 122: Execution standby data processing list; 130: Engine software; 131: Block function list; 132: Engine implementation code; 140: Operation result storage memory; 150: Conversion processing time list; 160: Engine interface list; 900: Processing circuit; 901: CPU; 902: RAM; 903: ROM; 904: Hardware accelerator; 905: FPGA; 906: GPU; 907: DSP; 908: ASIC; 1041: CPU execution unit; 1042: FPGA execution unit

Claims

A data processing execution device (100), comprising: a plurality of engines, each of which executes data processing and has a different degree of operation precision; an engine selection unit (102) for, in a case where new data processing is performed in a situation where there are execution data processing, which is data processing executed by any one of the plurality of engines, and assigned data processing, which is data processing not yet executed but to which an engine has already been assigned, and in a case where a priority level is set for each of the execution data processing, the assigned data processing, and the new data processing, selecting a new engine for executing the assigned data processing and an engine for executing the new data processing from the plurality of engines so that the execution data processing,the assigned data processing and the new data processing are each executed within the respective completion deadline, and such that data processing of a higher priority among the execution data processing, the new data processing, and the assigned data processing is executed by an engine with a higher degree of operation accuracy; and a control unit (103, 104) for causing the execution data processing, the assigned data processing, and the new data processing to be executed by the engines selected by the engine selection unit. The data processing execution device according to claim 1, wherein, when at least any one of the execution data processing, the assigned data processing, and the new data processing is not completed within the respective completion deadline when execution of the execution data processing is continued by an execution engine, the execution engine is currently executing the execution data processing, the engine selecting unit selects an engine other than the execution engine as the new engine for executing the execution data processing, and an engine other than the engine already assigned to the assigned data processing as the new engine for executing the assigned data processing. The data processing execution device according to claim 1, wherein, in a case where new data processing is performed in a situation where execution data processing, the assigned data processing, and other execution data processing, the data processing being executed other than the execution data processing, exist, and in a case where a priority level is set for each of the execution data processing, the assigned data processing, the other execution data processing, and the new data processing, the engine selection unit selects the new engine for executing the execution data processing, the new engine for executing the assigned data processing, a new engine for executing the other execution data processing, and the engine for executing the new data processing from the plurality of engines,that the data processing of a higher priority among the execution data processing, the assigned data processing, the other execution data processing, and the new data processing is executed by an engine with a higher degree of operation precision, and the control unit causes the execution data processing, the assigned data processing, the other execution data processing, and the new data processing to be executed by the engines selected by the engine selection unit. A data processing execution device according to claim 1, wherein, before the new engine is selected to execute the execution data processing, the control unit converts a common program code that is provided jointly for engines that are capable of executing the execution data processing, generates an individual program code for an execution engine that executes the execution data processing before selecting a new engine to execute the execution data processing, and causes the execution engine to execute the execution data processing using the generated individual program code for the execution engine, and wherein, before the new engine is selected to execute the execution data processing, the control unit converts the common program code, generates an individual program code for the new engine, and causes the new engine,to perform the execution data processing using the generated custom program code for the new engine. The data processing execution device according to claim 1, further comprising a conversion processing unit (106) for, when an interface specification differs between the new engine and an execution engine currently executing the execution data processing, performing conversion processing to absorb a difference in the interface specification. The data processing execution device according to claim 5, wherein, if at least any of the execution data processing, the assigned data processing, and the new data processing is not completed within the respective completion deadline when the execution of the execution data processing is continued by an execution engine, the execution engine is currently executing the execution data processing, the engine selection unit selects an engine other than the execution engine as the new engine for executing the execution data processing, and an engine other than the engine that has already been assigned to the assigned data processing as the new engine for executing the assigned data processing, such that the execution data processing, the assigned data processing, and the new data processing are each completed within the respective completion deadline, including a time required for the conversion processing.be completed., A data processing execution method, by a computer comprising a plurality of engines, each of which executes data processing and has different degrees of operation precision, performing:selecting, in a case where new data processing is performed in a situation where execution data processing, which is data processing executed by any one of the plurality of engines, and assigned data processing, which is data processing not yet executed but to which an engine has already been assigned, exist, and in a case where a priority level is set for each of the execution data processing, the assigned data processing, and the new data processing, a new engine for executing the assigned data processing and an engine for executing the new data processing from the plurality of engines such that the execution data processing,the assigned data processing and the new data processing are each executed within the respective completion deadline and in such a way that data processing of a higher priority among the execution data processing, the new data processing, and the assigned data processing is executed by an engine with a higher degree of operation accuracy, and causing the execution data processing, the assigned data processing, and the new data processing to be executed by the selected engines. A data processing execution program for causing a computer comprising a plurality of engines, each of which executes data processing and has a different degree of operation precision, to perform:an engine selection process for, in a case where new data processing is performed in a situation where there are execution data processing, which is data processing executed by any one of the plurality of engines, and assigned data processing, which is data processing not yet executed but to which an engine has already been assigned, and in a case where a priority level is set for each of the execution data processing, the assigned data processing, and the new data processing, selecting a new engine for executing the assigned data processing and an engine for executing the new data processing from the plurality of engines so that the execution data processing,the assigned data processing and the new data processing are each executed within the respective completion deadlines, and such that data processing of a higher priority among the execution data processing, the new data processing, and the assigned data processing is executed by an engine with a higher degree of operation accuracy; and a control method for causing the execution data processing, the assigned data processing, and the new data processing to be executed by the selected engines.

Citation Information

Patent Citations

  • Processing workloads using a processor hierarchy system

    US20130007762A1