WO2022074721A1 - 分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置 - Google Patents

分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置 Download PDF

Info

Publication number
WO2022074721A1
WO2022074721A1 PCT/JP2020/037780 JP2020037780W WO2022074721A1 WO 2022074721 A1 WO2022074721 A1 WO 2022074721A1 JP 2020037780 W JP2020037780 W JP 2020037780W WO 2022074721 A1 WO2022074721 A1 WO 2022074721A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
communication
execution
schedule
distributed processing
Prior art date
Application number
PCT/JP2020/037780
Other languages
English (en)
French (fr)
Inventor
功之郎 石原
Original Assignee
三菱電機株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2020/037780 priority Critical patent/WO2022074721A1/ja
Priority to JP2022554716A priority patent/JP7170957B2/ja
Priority to TW110109534A priority patent/TW202232315A/zh
Publication of WO2022074721A1 publication Critical patent/WO2022074721A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Definitions

  • the present invention relates to a distributed processing system that distributes a plurality of tasks by a plurality of processors.
  • a distributed processing system in which multiple devices are connected via a network is being studied.
  • the purpose of a distributed processing system is to perform many tasks in a state where a plurality of devices are synchronized, or to synchronize and control a plurality of devices in a wide range.
  • each device shares the processing result information of the task processed with each other and executes the processing of further tasks.
  • periodic processing may be performed. In that case, if the cycle cannot be observed, the next process to be executed becomes unclear, and device control and task process synchronization cannot be performed. Then, a serious error occurs, such as the distributed processing system stopping. It is possible to realize a distributed processing system in which periodic processing is performed by reducing extra waiting time for tasks or communication in order to comply with the cycle, and performing communication and processing that adheres to low delay and punctuality. Become.
  • the distributed processing system does not have to be a system in which a plurality of devices are connected by a network.
  • the distributed processing system may be a system in which a bus or memory sharing is used without using a network or the like, or a system in which a bus and memory sharing are also used.
  • a bus or memory sharing information can be exchanged with a very small delay.
  • Patent Document 1 discloses a system that performs distributed processing by a plurality of CPU cores. This system allocates task time (scheduling) in consideration of the increase in processing delay due to the increase in the load of each CPU core and the increase in the waiting time for processing due to the increase in communication time, and improves the efficiency of processing.
  • CPU is an abbreviation for Central Processing Unit.
  • the processing delay time when a single process is executed and the processing delay time used for time allocation based on the CPU load are calculated. Further, in the conventional method, time is allocated using the communication time when actually communicating.
  • various tasks and communications are performed. Each task and each communication, if feasible at the time the request occurs, will be executed immediately. And, regardless of whether each task is a steady task or a sudden task, and whether each communication is a steady communication or a sudden communication, a high priority is given. Tasks and communications are prioritized, and each task and communications may not be completed at the expected timing. As a result, the task and communication that are delayed in execution cause a delay in communication with the task that is executed next in a chain reaction.
  • the task is executed by the function such as the OS of each device.
  • the execution timing (execution time) of each task and each communication is determined in real time by the OS according to the criteria such as priority in order from the executable task or communication. That is, it is not possible to finely control the execution timing of each task and each communication.
  • OS is an abbreviation for Operating System.
  • An object of the present invention is to make it possible to systematically execute each task and each communication without executing each task and each communication on an ad hoc basis.
  • the distributed processing system of the present invention is a system that distributes a plurality of tasks by a plurality of processors.
  • the distributed processing system is The execution order of the plurality of tasks, the amount of processing required to execute each task, the amount of communication required for communication to give the execution result of each task to the next task, the priority of each task, and the priority of each communication.
  • An information acquisition unit that acquires task information indicating the degree, the allocation destination that identifies the processor to which each task is assigned, and Temporary specification of the execution time assigned to each task and the execution time assigned to each communication based on the execution order of the plurality of tasks, the processing amount of each task, the communication amount of each communication, and the allocation destination of each task.
  • Temporary schedule decision unit that decides the schedule, By adjusting the execution time of each task specified in the provisional schedule and the execution time of each communication specified in the provisional schedule based on the priority of each task and the priority of each communication, between tasks. It is provided with a conflict resolution unit that generates a schedule in which conflicts between conflicts and communications are resolved.
  • FIG. 1 The block diagram of the distributed processing system 100 in Embodiment 1.
  • FIG. 1 The block diagram of the scheduling apparatus 200 in Embodiment 1.
  • FIG. The flowchart of the distributed processing method in Embodiment 1. The figure which shows the task information 111 in Embodiment 1.
  • FIG. 1 The figure which shows the directed graph 112 in Embodiment 1.
  • FIG. The figure which shows the topology graph 113 in Embodiment 1.
  • the block diagram of the communication adjustment processing (S400) in Embodiment 1. The block diagram of the distributed processing system 100X in Embodiment 2.
  • Embodiment 1 The distributed processing system 100 will be described with reference to FIGS. 1 to 15.
  • the distributed processing system 100 is a system that performs distributed processing of a plurality of tasks by a plurality of processors.
  • an apparatus including each processor is referred to as a distributed processing apparatus 300.
  • the distributed processing system 100 includes a plurality of distributed processing devices 300.
  • Each distributed processing device 300 has a synchronization function.
  • the plurality of distributed processing devices 300 are synchronized with each other by their respective synchronization functions.
  • the distributed processing system 100 includes three distributed processing devices (300A to 300C). However, the distributed processing system 100 may include two distributed processing devices 300 or four or more distributed processing devices 300.
  • Each of the plurality of devices controlled by the plurality of distributed processing devices 300 is referred to as a target device 101.
  • Specific examples of the target device 101 are a robot arm, a servo, or a motor.
  • the distributed processing system 100 includes a plurality of target devices 101.
  • the distributed processing system 100 includes three target devices (101A to 101C).
  • Each target device is controlled by one or more distributed processing devices 300.
  • the plurality of distributed processing devices 300 cooperate to execute a plurality of tasks Ax.
  • the distributed processing system 100 may include two target devices 101 or four or more target devices 101.
  • the distributed processing system 100 includes a transfer device 102.
  • the transfer device 102 transfers data between the distributed processing devices 300.
  • Specific examples of the transfer device 102 are routers, switches, bridges or hubs.
  • the plurality of distributed processing devices 300 communicate with each other via the transfer device 102. Specifically, communication is performed to give the execution result of each task to the next task. However, the plurality of distributed processing devices 300 may communicate with each other without going through the transfer device 102. In that case, the transfer device 102 is unnecessary, and the distributed processing devices 300 are connected to each other.
  • the distributed processing system 100 includes a scheduling device 200.
  • the scheduling device 200 performs scheduling for distributed processing of a plurality of tasks by a plurality of processors. Scheduling means allocating time for each task and each communication. That is, the scheduling device 200 generates a schedule in which the execution time of each task and the execution time of each communication are specified.
  • Each distributed processing device 300 executes each assigned task at the execution time of each task specified in the schedule, and executes communication of the execution result of each assigned task at the execution time of each communication specified in the schedule. do.
  • the scheduling device 200 is connected to the distributed processing device 300A.
  • the scheduling device 200 may be connected to the transfer device 102.
  • the scheduling device 200 may have the function of the transfer device 102. In that case, the transfer device 102 is unnecessary, and the scheduling device 200 is connected to the plurality of distributed processing devices 300 instead of the transfer device 102.
  • the network configuration of the distributed processing system 100 may be any network configuration.
  • the network of the distributed processing system 100 may be either a wired network or a wireless network.
  • the configuration of the scheduling device 200 will be described with reference to FIG. 2.
  • the scheduling device 200 is a computer including hardware such as a processor 201, a memory 202, an auxiliary storage device 203, and an external interface 204. These hardware are connected to each other via a signal line.
  • the processor 201 is an IC that performs arithmetic processing and controls other hardware.
  • the processor 201 is a CPU or a system LSI.
  • IC is an abbreviation for Integrated Circuit.
  • CPU is an abbreviation for Central Processing Unit.
  • LSI is an abbreviation for Large Scale Integration.
  • the memory 202 is a volatile or non-volatile storage device.
  • the memory 202 is also referred to as a main storage device or a main memory.
  • the memory 202 is a RAM.
  • the data stored in the memory 202 is stored in the auxiliary storage device 203 as needed.
  • RAM is an abbreviation for Random Access Memory.
  • the auxiliary storage device 203 is a non-volatile storage device.
  • the auxiliary storage device 203 is a ROM, HDD, SSD or memory card.
  • the data stored in the auxiliary storage device 203 is loaded into the memory 202 as needed.
  • ROM is an abbreviation for Read Only Memory.
  • HDD is an abbreviation for Hard Disk Drive.
  • SSD is an abbreviation for Solid State Drive.
  • the external interface 204 is an interface for communicating or inputting / outputting with an external device (for example, a distributed processing device 300A or the like). That is, the external interface 204 serves as both a communication interface and an input / output interface.
  • external interface 204 is an Ethernet®, USB and UART port, respectively.
  • USB is an abbreviation for Universal Serial Bus.
  • UART is an abbreviation for Universal Asynchronous Receiver Transmitter.
  • the scheduling device 200 includes elements such as a scheduling unit 210 and a schedule output unit 220.
  • the scheduling unit 210 includes elements such as an information acquisition unit 211, a provisional schedule determination unit 212, and a conflict resolution unit 213. These elements are realized by software.
  • the auxiliary storage device 203 stores a scheduling program for operating the computer as the scheduling unit 210 and the schedule output unit 220.
  • the scheduling program is loaded into memory 202 and executed by processor 201.
  • the auxiliary storage device 203 further stores the OS. At least a portion of the OS is loaded into memory 202 and executed by processor 201.
  • the processor 201 executes the scheduling program while executing the OS.
  • OS is an abbreviation for Operating System.
  • the input / output data of the scheduling program is stored in the storage unit 290.
  • the memory 202 functions as a storage unit 290.
  • a storage device such as an auxiliary storage device 203, a register in the processor 201, and a cache memory in the processor 201 may function as a storage unit 290 instead of the memory 202 or together with the memory 202.
  • the scheduling device 200 may include a plurality of processors that replace the processor 201.
  • the plurality of processors share the functions of the processor 201.
  • the scheduling program can be computer-readablely recorded (stored) in a non-volatile recording medium such as an optical disk or flash memory.
  • the configuration of the distributed processing apparatus 300 will be described with reference to FIG.
  • the distributed processing device 300 is a computer including hardware such as a processor 301, a memory 302, an auxiliary storage device 303, and an external interface 304. These hardware are connected to each other via a signal line.
  • the processor 301 is an IC that performs arithmetic processing and controls other hardware.
  • the processor 301 is a CPU or a system LSI.
  • the memory 302 is a volatile or non-volatile storage device.
  • the memory 302 is also referred to as a main storage device or a main memory.
  • the memory 302 is a RAM.
  • the data stored in the memory 302 is stored in the auxiliary storage device 303 as needed.
  • the auxiliary storage device 303 is a non-volatile storage device.
  • the auxiliary storage device 303 is a ROM, HDD, SSD or memory card. The data stored in the auxiliary storage device 303 is loaded into the memory 302 as needed.
  • the external interface 304 is an interface for communicating or inputting / outputting with an external device (for example, the target device 101 and the transfer device 102). That is, the external interface 304 serves as both a communication interface and an input / output interface.
  • the external interface 304 is an Ethernet®, USB and UART port, respectively.
  • the distributed processing device 300 includes elements such as an execution control unit 311, a task execution unit 312, a communication execution unit 313, a device control unit 314, and a schedule reception unit 319. These elements are realized by software.
  • the auxiliary storage device 303 stores a distributed processing program for operating the computer as an execution control unit 311, a task execution unit 312, a communication execution unit 313, a device control unit 314, and a schedule reception unit 319.
  • the distributed processing program is loaded into the memory 302 and executed by the processor 301.
  • the OS is further stored in the auxiliary storage device 303. At least a portion of the OS is loaded into memory 302 and executed by processor 301.
  • the processor 301 executes the distributed processing program while executing the OS.
  • the input / output data of the distributed processing program is stored in the storage unit 390.
  • the schedule 391 and the like are stored in the storage unit 390.
  • the memory 302 functions as a storage unit 390.
  • a storage device such as an auxiliary storage device 303, a register in the processor 301, and a cache memory in the processor 301 may function as a storage unit 390 instead of the memory 302 or together with the memory 302.
  • the distributed processing device 300 may include a plurality of processors that replace the processor 301.
  • the plurality of processors share the functions of the processor 301.
  • the distributed processing program can be computer-readablely recorded (stored) in a non-volatile recording medium such as an optical disk or a flash memory.
  • the procedure for operating the distributed processing system 100 corresponds to the distributed processing method. Further, the operation procedure of the distributed processing system 100 corresponds to the processing procedure by the distributed processing program.
  • the scheduling program for the scheduling device 200 is part of the distributed processing program for the distributed processing system 100.
  • step S110 the information acquisition unit 211 of the scheduling device 200 acquires system information via the external interface 204 or the recording medium.
  • the system information is data including configuration information and task information.
  • the configuration information shows the configuration of the distributed processing system 100.
  • the task information indicates a plurality of tasks executed by the distributed processing system 100.
  • the task information 111 is a specific example of the task information.
  • the task information 111 shows the information of each of the five tasks (A, B, C, D, A'). Specifically, the task information 111 indicates a task name, a previous task, a next task, a processing amount, a communication amount, a task priority, a communication priority, and an allocation destination.
  • the task name identifies the task.
  • the previous task identifies the task to be executed immediately before.
  • the next task identifies the task to be executed next.
  • the processing amount is the amount of processing required to execute the task.
  • the length of task execution time is determined by the amount of processing. For example, the processing amount can be expressed by the processing time length, the number of steps, or the like.
  • the processing time length is the length of time required to execute a task under the reference execution condition.
  • the execution condition is a condition such as the processor 301.
  • the communication amount is the amount of communication for giving the execution result of a task to the next task.
  • the communication amount is expressed by the communication time length or the data size.
  • the communication time length is the length of time required for communication of the execution result under the reference communication condition.
  • the communication condition is a condition such as a communication speed. Communication of execution results may not be necessary depending on the configuration of the distributed processing device 300 and the method of assigning each task. For example, when a task and a next task are executed by the same distributed processing device 300, the amount of communication is extremely small because the execution result of the task is shared in the distributed processing device 300.
  • the task priority is the priority of the task.
  • the communication priority is a communication priority for giving the execution result of a task to the next task.
  • the assignment destination identifies the processor 301 to which the task is assigned. That is, the allocation destination identifies the processor 301 that executes the task. For example, the device A identifies the processor 301 of the distributed processing device 300A.
  • the task name, previous task, and next task indicate the dependencies between tasks.
  • Dependencies between tasks determine the execution order of multiple tasks.
  • step S120 the provisional schedule determination unit 212 of the scheduling device 200 determines the provisional schedule based on the system information.
  • the provisional schedule specifies the execution time assigned to each task and the execution time assigned to each communication.
  • the tentative schedule is determined without considering conflicts between tasks and conflicts between communications.
  • Conflicts between tasks mean that at least a portion of the execution time overlaps between tasks assigned to the same distributed processing apparatus 300. It is assumed that the number of tasks that one distributed processing apparatus 300 can execute at one time is one. That is, each distributed processing apparatus 300 cannot execute two or more tasks at the same timing.
  • conflict between communications means that at least a portion of the execution time overlaps between communications executed using the same channel. It is assumed that each distributed processing apparatus 300 performs full-duplex communication using a set of two communication paths. Further, it is assumed that the number of execution results that can be communicated at one time in each communication path is 1. That is, it is not possible to communicate two or more execution results at the same timing in each communication path.
  • the provisional schedule of each distributed processing apparatus 300 is determined as follows. First, the provisional schedule determination unit 212 refers to the task information and determines the execution order of a plurality of tasks based on the task name column, the previous task column, and the next task column. Further, the provisional schedule determination unit 212 refers to the task information and determines the length of the execution time of each task based on the processing amount column. Further, the provisional schedule determination unit 212 refers to the task information and determines the length of the execution time of each communication based on the communication amount column. Further, the provisional schedule determination unit 212 refers to the task information and determines the distributed processing device 300 to be the allocation destination of each task based on the allocation destination column.
  • the provisional schedule determination unit 212 determines whether the allocation destination of each task is different from the allocation destination of the next task based on the allocation destination column of each task and the allocation destination column of the next task. If the allocation destination of each task is different from the allocation destination of the next task, the provisional schedule determination unit 212 allocates communication processing. If the allocation destination of each task is the same as the allocation destination of the next task, the provisional schedule determination unit 212 does not allocate the communication process. This is because the task assignment destinations are the same, so communication for sharing data for executing the task by communication is not required.
  • the provisional schedule determination unit 212 is a distributed processing device based on the execution order of a plurality of tasks, the length of the execution time of each task, the length of the execution time of each communication, and the allocation destination of each task.
  • the execution time of each task in 300 and the execution time of each communication in each distributed processing device 300 are determined.
  • the provisional schedule determination unit 212 generates data indicating each determined information. For example, the provisional schedule determination unit 212 generates data corresponding to the provisional schedule graph 114 in FIG.
  • FIG. 6 shows a directed graph 112.
  • the directed graph 112 is a directed graph generated based on the task information 111 (see FIG. 5).
  • the directed graph 112 represents the following dependencies. After the execution of the task A, the task B, the task C, and the task D are executed based on the execution result of the task A. After the execution of task B, task C, and task D, task A'is executed based on the execution result of task B, the execution result of task C, and the execution result of task D.
  • FIG. 7 shows the topology graph 113.
  • the topology graph 113 is generated based on the configuration information acquired together with the task information 111.
  • the topology graph 113 represents the following configuration.
  • Port 1 of the distributed processing device 300A is connected to port 2 of the transfer device 102.
  • the port 4 of the distributed processing device 300B is connected to the port 3 of the transfer device 102.
  • the port 6 of the distributed processing device 300C is connected to the port 5 of the transfer device 102.
  • FIG. 8 shows a provisional schedule graph 114.
  • the tentative schedule graph 114 is generated based on the task information 111 (see FIG. 5) and the configuration information acquired together with the task information 111 (see FIG. 7).
  • CPUn means the processor 301 of the distributed processing device 300n.
  • Port xy means a communication path from port x to port y.
  • Switch means the transfer device 102. Circles marked with “A”, “B”, “C”, “D” or “A'” represent tasks.
  • Tn represents the communication n of the execution result.
  • Sn represents the task n for transfer.
  • the tentative schedule graph 114 represents, for example, the following tentative schedule. Execution time "0 to 10" is assigned to task A.
  • Execution time "10 to 15” is assigned to the communication T5.
  • Execution time “10” is assigned to task S3. It is assumed that the time lag due to task Sn is zero. Transfer delays and buffering delays may be added depending on the actual processing.
  • the execution time “10 + ⁇ to 15 + ⁇ ” is assigned to the communication T6.
  • “ ⁇ ” means the communication time for one frame.
  • Execution time "10 to 20" is assigned to task D.
  • step S200 the conflict resolution unit 213 of the scheduling device 200 executes the conflict resolution process based on the provisional schedule and the system information.
  • the conflict resolution process is a schedule in which conflicts between tasks and communications are resolved by adjusting the execution time of each task specified in the provisional schedule and the execution time of each communication specified in the provisional schedule. Generate 391. The details of the conflict resolution process (S200) will be described later.
  • a schedule 391 is set for each distributed processing device 300.
  • the schedule output unit 220 of the scheduling device 200 transmits the schedule 391 to each distributed processing device 300 via the external interface 204.
  • the schedule reception unit 319 of each distributed processing device 300 receives the schedule 391 and stores the schedule 391 in the storage unit 390.
  • the schedule output unit 220 transmits the schedule 391 to the distributed processing device 300A.
  • the distributed processing device 300A transmits the schedule 391 to each of the distributed processing device 300B and the distributed processing device 300C via the transfer device 102.
  • the schedule output unit 220 of the scheduling device 200 writes the schedule 391 to the recording medium.
  • the user inputs the schedule 391 to each distributed processing apparatus 300 using the recording medium.
  • the schedule reception unit 319 of each distributed processing device 300 receives the schedule 391 and stores the schedule 391 in the storage unit 390.
  • step S140 the processor 301 of each distributed processing unit 300 executes each assigned task at the execution time of each task specified in the schedule 391. Further, the processor 301 of each distributed processing unit 300 executes the communication of the execution result of each assigned task at the execution time of each communication specified in the schedule 391.
  • the execution control unit 311 operates the task execution unit 312 and the communication execution unit 313 according to the schedule 391.
  • the task execution unit 312 executes each assigned task.
  • the communication execution unit 313 communicates the execution result of each assigned task.
  • the device control unit 314 controls the target device 101 according to an instruction from the task.
  • the execution control unit 311 operates the task execution unit 312 as follows.
  • the execution control unit 311 determines whether the processor 301 is in the idle state at each time. When the processor 301 is in the idle state, the execution control unit 311 refers to the schedule 391 and determines whether or not there is a task that has not been executed. A task that has not been executed is called an unexecuted task.
  • the execution control unit 311 refers to the schedule 391 and determines whether or not there is an unexecuted task to which the start time within the specified time from the current time is assigned. An unexecuted task to which a start time within a specified time from the current time is assigned is called an execution target task.
  • the execution control unit 311 causes the task execution unit 312 to execute the execution target task.
  • the execution control unit 311 operates the communication execution unit 313 as follows.
  • the execution control unit 311 determines whether or not the communication path is open at each time. When the communication path is open, the execution control unit 311 refers to the schedule 391 and determines whether or not there is communication that has not been executed. Communication that has not been executed is called unexecuted communication. When there is one or more unexecuted communication, the execution control unit 311 refers to the schedule 391 and determines whether or not there is an unexecuted communication to which the start time within the specified time from the current time is assigned. Unexecuted communication to which a start time within a specified time from the current time is assigned is referred to as execution target communication. When there is execution target communication, the execution control unit 311 causes the communication execution unit 313 to execute the execution target communication.
  • step S201 the conflict resolution unit 213 sets the initial value of the priority to be processed.
  • the priority to be processed is called the target priority.
  • the conflict resolution unit 213 sets the highest priority as the target priority.
  • the schedule allocation is determined in order from the task and communication having the highest priority.
  • step S202 the conflict resolution unit 213 determines whether or not there is an undetermined task and unconfirmed communication.
  • An undetermined task is a task whose execution time is not fixed.
  • Undetermined communication is communication whose execution time is not fixed. The execution time is specified by the start time and the end time.
  • step S203 If there is neither an unconfirmed task nor an unconfirmed communication, the process ends.
  • step S203 the conflict resolution unit 213 determines whether or not there is an adjustment candidate task and adjustment candidate communication.
  • the adjustment candidate task is an undetermined task that has the same task priority as the target priority, is in an executable state, and has a hold flag indicating non-hold (0).
  • the executable state is a state in which there is no previous task or the execution times of the previous task and the previous communication are fixed.
  • the hold flag indicates hold (1) or non-hold (0).
  • the initial value of the hold flag is non-hold (0).
  • the adjustment candidate communication has the same communication priority as the target priority, is in an executable state, and is an undetermined communication in which the hold flag indicates non-hold (0).
  • the executable state is a state in which the execution time of the task is fixed.
  • step S205 If there is at least one of the adjustment candidate task and the adjustment candidate communication, the process proceeds to step S205. If neither the adjustment candidate task nor the adjustment candidate communication exists, the process proceeds to step S204.
  • step S204 the conflict resolution unit 213 lowers the target priority by one. After step S204, the process proceeds to step S202.
  • step S205 the conflict resolution unit 213 selects the task or communication having the earliest execution order from the adjustment candidate task and the adjustment candidate communication.
  • the selected task or selected communication is referred to as the adjustment target.
  • the schedule allocation is determined in order from the task and communication having the highest priority
  • the task and communication having the priority higher than the priority of the adjustment target are compared with the adjustment target in the order of the earliest start time. That is, low-priority tasks and communications are assigned, avoiding high-priority tasks and communications. If the adjustment target is a task, the process proceeds to step S300. If the adjustment target is communication, the process proceeds to step S400.
  • step S300 the conflict resolution unit 213 executes the task adjustment process.
  • the task adjustment process adjusts the execution time of the task having the lower priority when at least a part of the execution time overlaps between the tasks assigned to the same processor 301.
  • the details of the task adjustment process (S300) will be described later.
  • step S400 the conflict resolution unit 213 executes the communication adjustment process.
  • the communication adjustment process adjusts the execution time of the communication having the lower priority when at least a part of the execution time overlaps between the communications executed using the same communication path.
  • the details of the communication adjustment process (S400) will be described later.
  • step S300 or step S400 the process proceeds to step S211.
  • step S211th the conflict resolution unit 213 determines the hold flag to be adjusted. If the hold flag to be adjusted indicates non-hold (0), the process proceeds to step S212. If the hold flag to be adjusted indicates hold (1), the process proceeds to step S202.
  • step S212 the conflict resolution unit 213 determines each update target, adjusts the execution time of each update target, and updates the state of each update target.
  • the update target will be explained.
  • the update target is each task executed after the execution of the task whose execution time is adjusted, and each communication executed after the execution of the task whose execution time is adjusted.
  • the communication adjustment process (S400) is executed, the update target is each task executed after the execution of the communication whose execution time is adjusted, and each communication executed after the execution of the task whose execution time is adjusted. ..
  • the execution time of each update target is adjusted as follows.
  • the conflict resolution unit 213 shifts the execution time of each update target based on the execution time after the update.
  • the status of each update target is updated as follows.
  • the conflict resolution unit 213 sets the state of each update target as the unexecutable state.
  • step S213 the conflict resolution unit 213 sets the hold flag of each undetermined task and the hold flag of each undetermined communication to non-hold (0). After step S213, the process proceeds to step S201.
  • the flow of the task adjustment process (S300) will be described with reference to FIGS. 11 and 12.
  • the task to be adjusted is called the target task.
  • step S301 the conflict resolution unit 213 determines whether or not there is a common task having the same priority or higher.
  • a common task having the same priority or higher is a common task having a task priority equal to or higher than the task priority of the target task.
  • a common task is a task that has a common assignment destination with the target task. If there are common tasks with the same priority or higher, the process proceeds to step S302. If there is no common task having the same priority or higher, the process proceeds to step S313.
  • step S302 the conflict resolution unit 213 determines whether or not there is a conflict task.
  • a competing task is a high-priority common task whose execution time overlaps with the target task. If there is a conflicting task, the process proceeds to step S303. If there are no conflicting tasks, the process proceeds to step S311.
  • step S303 the conflict resolution unit 213 adjusts the execution time of the target task.
  • the execution time of the target task is adjusted as follows.
  • the conflict resolution unit 213 changes the execution time of the target task to the time before the execution time of the conflicting task.
  • the conflict resolution unit 213 changes the execution time of the target task to the time after the execution time of the conflicting task.
  • step S303 the process ends.
  • step S311 the conflict resolution unit 213 determines the presence or absence of a possible task.
  • a possible task is a task that may conflict with the target task.
  • the possibility task is a high-priority common task whose execution time is not fixed. If there is a possibility task, the process proceeds to step S312. If there is no possibility task, the process proceeds to step S313.
  • step S312 the conflict resolution unit 213 sets the hold flag of the target task to hold (1). After step S312, the process ends.
  • step S313 the conflict resolution unit 213 determines the execution time of the target task.
  • the value of the hold flag of the target task remains non-hold (0).
  • the communication adjustment process (S400) will be described with reference to FIGS. 13, 14 and 15. Communication that is the target of adjustment is called target communication.
  • step S401 the conflict resolution unit 213 determines whether there is common communication having the same priority or higher.
  • Common communication having the same priority or higher is common communication having a communication priority equal to or higher than the communication priority of the target communication.
  • Common communication is communication in which the target communication and the communication path are common. If there is common communication of the same priority or higher, the process proceeds to step S402. If there is no common communication of the same priority or higher, the process proceeds to step S404.
  • step S402 the conflict resolution unit 213 determines the presence or absence of conflict communication.
  • Competitive communication is high-priority common communication in which at least a part of the execution time overlaps with the target communication. If there is competing communication, the process proceeds to step S403. If there is no competing communication, the process proceeds to step S411.
  • step S403 the conflict resolution unit 213 adjusts the execution time of the target communication.
  • the execution time of the target communication is adjusted as follows.
  • the conflict resolving unit 213 changes the execution time of the target communication to the time before the execution time of the competing communication.
  • the conflict resolving unit 213 changes the execution time of the target communication to the time after the execution time of the competing communication.
  • step S403 the process ends.
  • step S404 the conflict resolution unit 213 determines the execution time of the target communication.
  • the value of the hold flag of the target communication remains non-hold (0).
  • step S411 the conflict resolution unit 213 determines the presence or absence of possible communication.
  • Possibility communication is communication that may conflict with the target communication. Specifically, the possibility communication is a high-priority common communication whose execution time is not fixed. If there is possible communication, the process proceeds to step S412. If there is no possible communication, the process proceeds to step S413.
  • step S412 the conflict resolution unit 213 sets the hold flag of the target communication to hold (1). After step S412, the process ends.
  • step S413 the conflict resolution unit 213 determines whether or not mixed communication and split communication can be applied.
  • the conflict resolution unit 213 confirms whether the preparations for carrying out the determination of the mixed communication and the divided communication existing in the transition step are prepared.
  • the conflict resolution unit 213 determines whether the start time of each competing communication, which is the target of mixed communication and split communication, is fixed.
  • Mixed communication is communication that is mixed with target communication.
  • mixed communication is communication in which an execution time that partially overlaps with the execution time of the target communication is assigned.
  • Divided communication is a possibility communication that requires division of the target communication.
  • the split communication is a communication in which the execution time within the execution time of the target communication may be allocated. If mixed communication and split communication can be applied, the process proceeds to step S414. If mixed communication and split communication cannot be applied, the process proceeds to step S421.
  • step S414 the conflict resolution unit 213 determines the start time of the target communication. If the start time of the target communication is fixed, the process proceeds to step S415. If the start time of the target communication is not fixed, the process proceeds to step S416.
  • step S415 the conflict resolution unit 213 sets the hold flag of the target communication to hold (1). After step S415, the process ends.
  • step S416 the conflict resolution unit 213 determines the start time of the target communication.
  • the value of the hold flag of the target communication remains non-hold (0).
  • step S421 the conflict resolution unit 213 determines the presence / absence of mixed communication and split communication. If there is both mixed communication and split communication, the process proceeds to step S423. If there is no at least one of mixed communication and split communication, the process proceeds to step S422.
  • step S422 the conflict resolution unit 213 determines the execution time of the target communication.
  • the value of the hold flag of the target communication remains non-hold (0).
  • step S423 the conflict resolution unit 213 determines which of the mixed communication and the divided communication has the earlier start time.
  • the communication with the earlier start time is called the previous communication. If the previous communication is mixed communication, the process proceeds to step S424. If the previous communication is split communication, the process proceeds to step S425.
  • step S424 the conflict resolution unit 213 treats the target communication and the mixed communication as one communication. That is, the conflict resolution unit 213 generates a communication in which the target communication and the mixed communication are mixed. The value of the hold flag of the target communication remains non-hold (0). After step S424, the process ends.
  • step S425 the conflict resolution unit 213 divides the target communication into the first half communication and the second half communication.
  • the communication in the first half is the communication in the time before the execution time of the divided communication.
  • the communication in the latter half is the remaining communication excluding the communication in the first half from the target communication.
  • the conflict resolution unit 213 determines the execution time of the first half of the target communication.
  • the value of the hold flag of the target communication remains non-hold (0).
  • the scheduling device 200 may generate the schedule 391 in consideration of the communication time of the priority frame.
  • the priority frame is a frame that is prioritized over the communication of the execution result of each task.
  • Specific priority frames are emergency frames and scheduled frames.
  • An emergency frame is a frame that should be communicated as soon as possible.
  • the scheduled frame is a frame in which the communication timing is fixed.
  • the provisional schedule determination unit 212 reserves the communication time for the priority frame, and allocates the time other than the reserved communication time to each task and each communication. For example, by giving the highest priority to the priority frame in the task information 111, the communication time for the priority frame is secured.
  • the information acquisition unit 211 may automatically acquire system information. For example, it is possible to automatically acquire system information by executing an actual task or a task equivalent to an actual task, and executing actual communication or communication equivalent to the actual communication. Small delays in equipment can be calculated and corrected.
  • the scheduling device 200 may generate an optimum schedule 391 for each distributed processing device 300 by changing the allocation destination of each task. That is, the scheduling device 200 may calculate the optimal and shortest time allocation with a small amount of communication by changing the allocation destination of each task.
  • the optimum schedule 391 is a schedule in which the total execution time of the plurality of tasks is the shortest, and a schedule in which the total communication volume of the plurality of tasks is the minimum.
  • Embodiment 2 The embodiment in which the distributed processing is realized by one distributed processing apparatus 300 will be described mainly different from the first embodiment with reference to FIGS. 16 to 18.
  • the distributed processing system 100X includes one distributed processing device 300X instead of a plurality of distributed processing devices (300A to 300C) (see FIG. 1).
  • the distributed processing device 300X includes a multi-core processor in order to replace a plurality of distributed processing devices (300A to 300C).
  • the distributed processing device 300X includes a plurality of processors (301A to 301C).
  • the processor 301A replaces the distributed processing unit 300A (see FIG. 1). That is, the processor 301A controls the target device 101A.
  • the processor 301B replaces the distributed processing unit 300B (see FIG. 1). That is, the processor 301B controls the target device 101B.
  • the processor 301C replaces the distributed processing unit 300C (see FIG. 1). That is, the processor 301C controls the target device 101C.
  • Each of the plurality of processors includes elements such as an execution control unit 311, a task execution unit 312, a communication execution unit 313, a device control unit 314, and a schedule reception unit 319.
  • the distributed processing method in the second embodiment is the same as the distributed processing method in the first embodiment (see FIG. 4).
  • the plurality of tasks are distributed and processed by the plurality of processors 301 of the distributed processing apparatus 300X instead of the plurality of distributed processing apparatus 300.
  • Embodiment 3 A mode for adjusting the timing of each execution start of the task and the communication in the distributed processing apparatus 300 will be described mainly different from the first embodiment with reference to FIG.
  • the distributed processing device 300 further includes a task processing standby unit 315 and a communication standby unit 316.
  • the distributed processing program further causes the computer to function as a task processing standby unit 315 and a communication standby unit 316.
  • the distributed processing method in the third embodiment is the same as the distributed processing method in the first embodiment (see FIG. 4).
  • the provisional schedule determination unit 212 generates a provisional schedule by giving a margin to each of the processing time of each task and each communication time.
  • the schedule 391 is generated with a margin in each of the processing time of each task and each communication time.
  • the task processing standby unit 315 and the communication standby unit 316 operate as follows.
  • the task processing standby unit 315 makes the task execution unit 312 wait until the execution time of each task specified in the schedule 391 is reached before the task execution unit 312 executes each task. For example, the task processing standby unit 315 does not input each task to the task execution unit 312 until the execution time of each task specified in the schedule 391 is reached.
  • the communication standby unit 316 makes the communication execution unit 313 wait until the execution time of each communication specified in the schedule 391 is reached. For example, the communication standby unit 316 does not input the execution result of each task to the communication execution unit 313 until the execution time of each communication specified in the schedule 391 is reached.
  • the communication timing is estimated from the processing time of each task, and the communication schedule is formulated.
  • the task execution timing in each processor is only the processing time estimated from the processing content or the measured processing time. Therefore, the processing time may increase or decrease depending on the characteristics of the processor or due to unexpected processing such as interrupt processing.
  • the amount of calculation increases or decreases due to the change of the input information of each task, that is, the information input according to the state of the controlled object even if the processing is periodically performed, and the processing time is increased accordingly. May increase or decrease.
  • the data to be transmitted may be gradually reduced.
  • the delay due to transmission processing in a switch or the like may differ depending on the transmission timing.
  • frame transmission may be started at an unintended timing simply by giving transmission permission for a frame having a specific priority in a specific period. If the frame transmission matches the transmission schedule of the same priority, the frame is transmitted at a timing different from the originally intended timing. If the transmission of the frame A interferes with the transmission of the frame B that should be transmitted at that timing, the previously scheduled schedule shifts and the schedule breaks down.
  • the problem is that the task process is not executed at a specific timing and the frame is not transmitted at a specific timing.
  • task processing and communication processing may fluctuate.
  • the distributed processing apparatus 300 includes a task processing standby unit 315 and a communication standby unit 316. As a result, the distributed processing apparatus 300 can execute each task and each communication according to the schedule 391 and according to the timing of the schedule 391. Further, as a countermeasure against the fluctuation, the scheduling device 200 can generate the schedule 391 with a margin in the processing time of each task and each communication time on the assumption of the fluctuation.
  • One distributed processing device 300X that substitutes for a plurality of distributed processing devices may include a task processing standby unit 315 and a communication standby unit 316.
  • the scheduling device 200 includes a processing circuit 209.
  • the processing circuit 209 is hardware that realizes the scheduling unit 210 and the schedule output unit 220.
  • the processing circuit 209 may be dedicated hardware or may be a processor 201 that executes a program stored in the memory 202.
  • the processing circuit 209 is dedicated hardware, the processing circuit 209 is, for example, a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, an ASIC, an FPGA, or a combination thereof.
  • ASIC is an abbreviation for Application Specific Integrated Circuit.
  • FPGA is an abbreviation for Field Programmable Gate Array.
  • the scheduling device 200 may include a plurality of processing circuits that replace the processing circuit 209.
  • the plurality of processing circuits share the functions of the processing circuit 209.
  • processing circuit 209 some functions may be realized by dedicated hardware, and the remaining functions may be realized by software or firmware.
  • each function of the scheduling device 200 can be realized by hardware, software, firmware, or a combination thereof.
  • the distributed processing device 300 includes a processing circuit 309.
  • the processing circuit 309 is hardware that realizes the execution control unit 311, the task execution unit 312, the communication execution unit 313, the device control unit 314, and the schedule reception unit 319.
  • the processing circuit 309 may be dedicated hardware or a processor 301 that executes a program stored in the memory 302.
  • the processing circuit 309 is dedicated hardware, the processing circuit 309 is, for example, a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, an ASIC, an FPGA, or a combination thereof.
  • the distributed processing device 300 may include a plurality of processing circuits that replace the processing circuit 309.
  • the plurality of processing circuits share the functions of the processing circuit 309.
  • processing circuit 309 some functions may be realized by dedicated hardware, and the remaining functions may be realized by software or firmware.
  • each function of the distributed processing device 300 can be realized by hardware, software, firmware, or a combination thereof.
  • Each embodiment is an example of a preferred embodiment and is not intended to limit the technical scope of the invention.
  • Each embodiment may be partially implemented or may be implemented in combination with other embodiments.
  • the procedure described using the flowchart or the like may be appropriately changed.
  • the "part” which is an element of each device described in each embodiment may be read as “processing” or "process”.
  • 100 distributed processing system 101 target device, 102 transfer device, 111 task information, 112 directed graph, 113 topology graph, 114 provisional schedule graph, 200 scheduling device, 201 processor, 202 memory, 203 auxiliary storage device, 204 external interface, 209 processing Circuit, 210 scheduling unit, 211 information acquisition unit, 212 provisional schedule determination unit, 213 conflict resolution unit, 220 schedule output unit, 290 storage unit, 300 distributed processing device, 301 processor, 302 memory, 303 auxiliary storage device, 304 external interface , 309 processing circuit, 311 execution control unit, 312 task execution unit, 313 communication execution unit, 314 device control unit, 315 task processing standby unit, 316 communication standby unit, 319 schedule reception unit, 390 storage unit, 391 schedule.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

情報取得部(211)はタスク情報を取得する。仮スケジュール決定部(212)は、前記複数のタスクの実行順と各タスクの処理量と各通信の通信量と各タスクの割り当て先とに基づいて、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する仮スケジュール、を決定する。競合解消部(213)は、各タスクの優先度と各通信の優先度とに基づいて、前記仮スケジュールに指定された各タスクの実行時間と前記仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール、を生成する。

Description

分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置
 本発明は、複数のタスクを複数のプロセッサによって分散処理する分散処理システムに関するものである。
 複数の機器がネットワークで接続される分散処理システムが検討されている。
 分散処理システムは、複数の機器が同期した状態で多くのタスクを実行すること、あるいは、広い範囲で複数の機器を同期させて制御すること、を目的とする。
 分散処理システムでは、各機器が、互いに処理したタスクの処理結果の情報を共有し、さらなるタスクの処理を実行する。
 分散処理システムでは、周期的な処理が行われる場合がある。その場合に周期を順守できないと、次に実行すべき処理が不明確になり、機器制御およびタスク処理同期ができなくなる。そして、分散処理システムが停止するなど、重大なエラーが発生する。
 周期を順守するためにタスクまたは通信のための余計な待機時間を削減し、低遅延および定時性を守った通信および処理を行うことで、周期的な処理が行われる分散処理システムが実現可能となる。
 分散処理システムは、複数の機器がネットワークで接続されたシステムでなくてもよい。
 例えば、分散処理システムは、ネットワーク等を利用せずに、バスあるいはメモリ共有等が利用されるシステム、あるいは、バスおよびメモリ共有等が併せて利用されるシステムであってもよい。バスあるいはメモリ共有等を利用することにより、極僅かな遅延で情報交換を行うことができる。
 特許文献1には、複数のCPUコアによって分散処理を行うシステムが開示されている。
 このシステムは、各CPUコアの負荷の増加に伴う処理遅延の増加と通信時間の増加に伴う処理の待ち時間の増加を考慮して、タスクの時間割り当て(スケジューリング)を行い、処理の効率化を実現する。
 CPUは、Central Processing Unitの略称である。
特開2010-079622号公報
 従来の方式は、単一処理を実行した場合の処理遅延時間とCPU負荷に基づく時間割り当てで用いる処理遅延時間とを算出する。また、従来の方式は、実際に通信を行った場合の通信時間を用いて時間割り当てを行う。
 しかし、実際には、さまざまなタスクおよび通信が実行される。各タスクおよび各通信は、要求が発生した時点で実行可能であれば、即座に実行される。そして、各タスクが定常的なタスクであるか突発的なタスクであるかにかかわらず、また、各通信が定常的な通信であるか突発的な通信であるかにかかわらず、高優先度のタスクおよび通信が優先され、想定していたタイミングで各タスクおよび各通信が完了しないことがある。これにより、実行が遅れたタスクと通信は、連鎖的に次に実行されるタスクと通信の遅延を引き起こす。
 各機器にはタスクの内容とタスクの優先度のみが入力される。タスクの実行は、各機器のOS等の機能により行われる。その際に、各タスクと各通信の実行タイミング(実行時刻)は、OSによって、リアルタイムに、実行可能なタスクまたは通信から順に優先度等の基準に従って決定される。つまり、各タスクと各通信の実行タイミングに対して細かな制御ができない。
 現状の分散処理システムでは、場当たり的に各タスクと各通信が実行されるため、各タスクと各通信の細かなタイミングが算出されない。
 OSは、Operating Systemの略称である。
 本発明は、場当たり的に各タスクと各通信を実行せずに、計画的に各タスクと各通信とを実行できるようにすることを目的とする。
 本発明の分散処理システムは、複数のタスクを複数のプロセッサによって分散処理するシステムである。
 前記分散処理システムは、
 前記複数のタスクの実行順と、各タスクの実行に要する処理量と、各タスクの実行結果を次のタスクに与えるための通信に要する通信量と、各タスクの優先度と、各通信の優先度と、各タスクが割り当てられるプロセッサを識別する割り当て先と、を示すタスク情報を取得する情報取得部と、
 前記複数のタスクの実行順と各タスクの処理量と各通信の通信量と各タスクの割り当て先とに基づいて、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する仮スケジュール、を決定する仮スケジュール決定部と、
 各タスクの優先度と各通信の優先度とに基づいて、前記仮スケジュールに指定された各タスクの実行時間と前記仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール、を生成する競合解消部と、を備える。
 本発明によれば、場当たり的に各タスクと各通信を実行せずに、計画的に各タスクと各通信とを実行することが可能となる。
実施の形態1における分散処理システム100の構成図。 実施の形態1におけるスケジューリング装置200の構成図。 実施の形態1における分散処理装置300の構成図。 実施の形態1における分散処理方法のフローチャート。 実施の形態1におけるタスク情報111を示す図。 実施の形態1における有向グラフ112を示す図。 実施の形態1におけるトポロジグラフ113を示す図。 実施の形態1における仮スケジュールグラフ114を示す図。 実施の形態1における競合解消処理(S200)のフローチャート。 実施の形態1における競合解消処理(S200)のフローチャート。 実施の形態1におけるタスク調整処理(S300)のフローチャート。 実施の形態1におけるタスク調整処理(S300)のフローチャート。 実施の形態1における通信調整処理(S400)のフローチャート。 実施の形態1における通信調整処理(S400)のフローチャート。 実施の形態1における通信調整処理(S400)のフローチャート。 実施の形態2における分散処理システム100Xの構成図。 実施の形態2における分散処理装置300Xの構成図。 実施の形態2における分散処理方法のフローチャート。 実施の形態3における分散処理装置300の構成図。 実施の形態におけるスケジューリング装置200のハードウェア構成図。 実施の形態における分散処理装置300のハードウェア構成図。
 実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
 実施の形態1.
 分散処理システム100について、図1から図15に基づいて説明する。
***構成の説明***
 図1に基づいて、分散処理システム100の構成を説明する。
 分散処理システム100は、複数のタスクを複数のプロセッサによって分散処理するシステムである。
 分散処理システム100において、各プロセッサを備える装置を分散処理装置300と称する。
 分散処理システム100は、複数の分散処理装置300を備える。
 各分散処理装置300は、同期機能を有する。
 複数の分散処理装置300は、各々の同期機能によって互いに同期している。
 図1において、分散処理システム100は、3台の分散処理装置(300A~300C)を備えている。
 但し、分散処理システム100は、2台の分散処理装置300または4台以上の分散処理装置300を備えてもよい。
 複数の分散処理装置300によって制御される複数の機器のそれぞれを対象機器101と称する。
 対象機器101の具体例は、ロボットアーム、サーボまたはモータである。
 分散処理システム100は、複数の対象機器101を備える。
 図1において、分散処理システム100は、3台の対象機器(101A~101C)を備えている。
 各対象機器は、1台以上の分散処理装置300によって制御される。例えば、対象機器101Aを制御するための複数のタスクAxが存在する。複数の分散処理装置300は複数のタスクAxを連携して実行する。
 但し、分散処理システム100は、2台の対象機器101または4台以上の対象機器101を備えてもよい。
 分散処理システム100は、転送装置102を備える。
 転送装置102は、分散処理装置300間でデータを転送する。転送装置102の具体例は、ルーター、スイッチ、ブリッジまたはハブである。
 複数の分散処理装置300は、転送装置102を介して互いに通信を行う。
 具体的には、各タスクの実行結果を次のタスクに与えるための通信が行われる。
 但し、複数の分散処理装置300は、転送装置102を介さずに互いに通信を行ってもよい。その場合、転送装置102は不要であり、分散処理装置300同士が接続される。
 分散処理システム100は、スケジューリング装置200を備える。
 スケジューリング装置200は、複数のタスクを複数のプロセッサによって分散処理するためのスケジューリングを行う。スケジューリングは、各タスクと各通信とに対する時間割り当てを意味する。
 つまり、スケジューリング装置200は、各タスクの実行時間と各通信の実行時間とが指定されたスケジュールを生成する。
 各分散処理装置300は、割り当てられた各タスクをスケジュールに指定された各タスクの実行時間に実行し、割り当てられた各タスクの実行結果の通信をスケジュールに指定された各通信の実行時間に実行する。
 図1において、スケジューリング装置200は、分散処理装置300Aに接続されている。
 但し、スケジューリング装置200は、転送装置102に接続されてよい。
 また、スケジューリング装置200が転送装置102の機能を有してもよい。その場合、転送装置102は不要であり、スケジューリング装置200が転送装置102の代わりに複数の分散処理装置300に接続される。
 分散処理システム100のネットワーク構成は、どのようなネットワーク構成であってもよい。
 分散処理システム100のネットワークは、有線ネットワークと無線ネットワークとのいずれであってもよい。
 図2に基づいて、スケジューリング装置200の構成を説明する。
 スケジューリング装置200は、プロセッサ201とメモリ202と補助記憶装置203と外部インタフェース204といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
 プロセッサ201は、演算処理を行うICであり、他のハードウェアを制御する。例えば、プロセッサ201は、CPUまたはシステムLSIである。
 ICは、Integrated Circuitの略称である。
 CPUは、Central Processing Unitの略称である。
 LSIは、Large Scale Integrationの略称である。
 メモリ202は揮発性または不揮発性の記憶装置である。メモリ202は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ202はRAMである。メモリ202に記憶されたデータは必要に応じて補助記憶装置203に保存される。
 RAMは、Random Access Memoryの略称である。
 補助記憶装置203は不揮発性の記憶装置である。例えば、補助記憶装置203は、ROM、HDD、SSDまたはメモリカードである。補助記憶装置203に記憶されたデータは必要に応じてメモリ202にロードされる。
 ROMは、Read Only Memoryの略称である。
 HDDは、Hard Disk Driveの略称である。
 SSDは、Solid State Driveの略称である。
 外部インタフェース204は、外部の機器(例えば、分散処理装置300Aなど)と通信または入出力を行うためのインタフェースである。つまり、外部インタフェース204は、通信インタフェースと入出力インタフェースとを兼ねる。例えば、外部インタフェース204は、イーサネット(登録商標)、USBおよびUARTのそれぞれのポートである。
 USBは、Universal Serial Busの略称である。
 UARTは、Universal Asynchronous Receiver Transmitterの略称である。
 スケジューリング装置200は、スケジューリング部210とスケジュール出力部220といった要素を備える。
 スケジューリング部210は、情報取得部211と仮スケジュール決定部212と競合解消部213といった要素を備える。
 これらの要素はソフトウェアで実現される。
 補助記憶装置203には、スケジューリング部210とスケジュール出力部220としてコンピュータを機能させるためのスケジューリングプログラムが記憶されている。スケジューリングプログラムは、メモリ202にロードされて、プロセッサ201によって実行される。
 補助記憶装置203には、さらに、OSが記憶されている。OSの少なくとも一部は、メモリ202にロードされて、プロセッサ201によって実行される。
 プロセッサ201は、OSを実行しながら、スケジューリングプログラムを実行する。
 OSは、Operating Systemの略称である。
 スケジューリングプログラムの入出力データは記憶部290に記憶される。
 メモリ202は記憶部290として機能する。但し、補助記憶装置203、プロセッサ201内のレジスタおよびプロセッサ201内のキャッシュメモリなどの記憶装置が、メモリ202の代わりに、又は、メモリ202と共に、記憶部290として機能してもよい。
 スケジューリング装置200は、プロセッサ201を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ201の機能を分担する。
 スケジューリングプログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録(格納)することができる。
 図3に基づいて、分散処理装置300の構成を説明する。
 分散処理装置300は、プロセッサ301とメモリ302と補助記憶装置303と外部インタフェース304といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
 プロセッサ301は、演算処理を行うICであり、他のハードウェアを制御する。例えば、プロセッサ301は、CPUまたはシステムLSIである。
 メモリ302は揮発性または不揮発性の記憶装置である。メモリ302は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ302はRAMである。メモリ302に記憶されたデータは必要に応じて補助記憶装置303に保存される。
 補助記憶装置303は不揮発性の記憶装置である。例えば、補助記憶装置303は、ROM、HDD、SSDまたはメモリカードである。補助記憶装置303に記憶されたデータは必要に応じてメモリ302にロードされる。
 外部インタフェース304は、外部の機器(例えば、対象機器101および転送装置102など)と通信または入出力を行うためのインタフェースである。つまり、外部インタフェース304は、通信インタフェースと入出力インタフェースとを兼ねる。例えば、外部インタフェース304は、イーサネット(登録商標)、USBおよびUARTのそれぞれのポートである。
 分散処理装置300は、実行制御部311とタスク実行部312と通信実行部313と機器制御部314とスケジュール受付部319といった要素を備える。これらの要素はソフトウェアで実現される。
 補助記憶装置303には、実行制御部311とタスク実行部312と通信実行部313と機器制御部314とスケジュール受付部319としてコンピュータを機能させるための分散処理プログラムが記憶されている。分散処理プログラムは、メモリ302にロードされて、プロセッサ301によって実行される。
 補助記憶装置303には、さらに、OSが記憶されている。OSの少なくとも一部は、メモリ302にロードされて、プロセッサ301によって実行される。
 プロセッサ301は、OSを実行しながら、分散処理プログラムを実行する。
 分散処理プログラムの入出力データは記憶部390に記憶される。例えば、記憶部390には、スケジュール391などが記憶される。
 メモリ302は記憶部390として機能する。但し、補助記憶装置303、プロセッサ301内のレジスタおよびプロセッサ301内のキャッシュメモリなどの記憶装置が、メモリ302の代わりに、又は、メモリ302と共に、記憶部390として機能してもよい。
 分散処理装置300は、プロセッサ301を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ301の機能を分担する。
 分散処理プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録(格納)することができる。
***動作の説明***
 分散処理システム100の動作の手順は分散処理方法に相当する。また、分散処理システム100の動作の手順は分散処理プログラムによる処理の手順に相当する。スケジューリング装置200のためのスケジューリングプログラムは分散処理システム100のための分散処理プログラムの一部である。
 図4に基づいて、分散処理方法を説明する。
 ステップS110において、スケジューリング装置200の情報取得部211は、外部インタフェース204または記録媒体を介して、システム情報を取得する。
 システム情報は、構成情報と、タスク情報と、を含むデータである。
 構成情報は、分散処理システム100の構成を示す。
 タスク情報は、分散処理システム100によって実行される複数のタスクを示す。
 図5に基づいて、タスク情報111を説明する。タスク情報111はタスク情報の具体例である。
 タスク情報111は、5つのタスク(A,B,C,D,A’)のそれぞれの情報を示している。
 具体的には、タスク情報111は、タスク名、前タスク、次タスク、処理量、通信量、タスク優先度、通信優先度および割り当て先を示している。
 タスク名は、タスクを識別する。
 前タスクは、1つ前に実行されるタスクを識別する。
 次タスクは、次に実行されるタスクを識別する。
 処理量は、タスクの実行に要する処理の量である。処理量に応じて、タスクの実行時間の長さが決まる。例えば、処理量は、処理時間長またはステップ数などで表すことができる。処理時間長は、基準となる実行条件の元でタスクの実行に要する時間の長さである。例えば、実行条件はプロセッサ301などの条件である。
 通信量は、タスクの実行結果を次のタスクに与えるための通信の量である。例えば、通信量は、通信時間長またはデータサイズなどで表される。通信時間長は、基準となる通信条件の元で実行結果の通信に要する時間の長さである。例えば、通信条件は通信速度などの条件である。分散処理装置300の構成および各タスクの割り当て方によっては、実行結果の通信が不要になる場合がある。例えば、タスクと次タスクが同じ分散処理装置300によって実行される場合、タスクの実行結果が分散処理装置300の中で共有されるため、通信量は限りなく小さい。つまり、通信量は無視できるほど小さい。
 タスク優先度は、タスクの優先度である。
 通信優先度は、タスクの実行結果を次のタスクに与えるための通信の優先度である。
 割り当て先は、タスクが割り当てられたプロセッサ301を識別する。つまり、割り当て先は、タスクを実行するプロセッサ301を識別する。例えば、装置Aは、分散処理装置300Aのプロセッサ301を識別する。
 タスク名、前タスクおよび次タスクは、タスク間の依存関係を示す。
 タスク間の依存関係によって、複数のタスクの実行順が定まる。
 図4に戻り、ステップS120から説明を続ける。
 ステップS120において、スケジューリング装置200の仮スケジュール決定部212は、システム情報に基づいて、仮スケジュールを決定する。
 仮スケジュールは、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する。
 仮スケジュールは、タスク間の競合と通信間の競合とを考慮せずに決定される。
 タスク間の競合は、同じ分散処理装置300に割り当てられたタスク間で実行時間の少なくとも一部が重複することを意味する。1台の分散処理装置300が1度に実行することが可能なタスクの数が1であると仮定する。つまり、各分散処理装置300は、2つ以上のタスクを同じタイミングで実行することができない。
 通信間の競合は、同じ通信路を用いて実行される通信間で実行時間の少なくとも一部が重複することを意味する。各分散処理装置300が2本1組の通信路を用いて全二重通信を行うと仮定する。また、各通信路で1度に通信することが可能な実行結果の数が1であると仮定する。つまり、各通信路で2つ以上の実行結果を同じタイミングで通信することができない。
 各分散処理装置300の仮スケジュールは以下のように決定される。
 まず、仮スケジュール決定部212は、タスク情報を参照し、タスク名の欄と前タスクの欄と次タスクの欄とに基づいて、複数のタスクの実行順を決定する。
 また、仮スケジュール決定部212は、タスク情報を参照し、処理量の欄に基づいて、各タスクの実行時間の長さを決定する。
 また、仮スケジュール決定部212は、タスク情報を参照し、通信量の欄に基づいて、各通信の実行時間の長さを決定する。
 また、仮スケジュール決定部212は、タスク情報を参照し、割り当て先欄に基づいて各タスクの割り当て先となる分散処理装置300を決定する。
 また、仮スケジュール決定部212は、各タスクの割り当て先欄と次タスクの割り当て先欄とに基づいて、各タスクの割り当て先が次タスクの割り当て先と異なるか判定する。各タスクの割り当て先が次タスクの割り当て先と異なる場合、仮スケジュール決定部212は通信処理の割り当てを行う。各タスクの割り当て先が次タスクの割り当て先と同一である場合、仮スケジュール決定部212は通信処理の割り当てを行わない。タスクの割り当て先が同一であるので、通信によるタスクを実行するためのデータを共有するための通信が不要であるためである。
 そして、仮スケジュール決定部212は、複数のタスクの実行順と、各タスクの実行時間の長さと、各通信の実行時間の長さと、各タスクの割り当て先と、に基づいて、各分散処理装置300における各タスクの実行時間と、各分散処理装置300における各通信の実行時間と、を決定する。仮スケジュール決定部212は、決定した各情報を示すデータを生成する。例えば、仮スケジュール決定部212は、図8の仮スケジュールグラフ114に相当するデータを生成する。
 図6に、有向グラフ112を示す。有向グラフ112は、タスク情報111(図5参照)に基づいて生成される有向グラフである。
 有向グラフ112は、以下のような依存関係を表している。
 タスクAの実行の後、タスクAの実行結果に基づいて、タスクB、タスクCおよびタスクDが実行される。
 タスクB、タスクCおよびタスクDの実行の後、タスクBの実行結果とタスクCの実行結果とタスクDの実行結果とに基づいて、タスクA’が実行される。
 図7に、トポロジグラフ113を示す。トポロジグラフ113は、タスク情報111と共に取得された構成情報に基づいて生成される。
 トポロジグラフ113は、以下のような構成を表している。
 分散処理装置300Aのポート1が転送装置102のポート2に接続されている。
 分散処理装置300Bのポート4が転送装置102のポート3に接続されている。
 分散処理装置300Cのポート6が転送装置102のポート5に接続されている。
 図8に、仮スケジュールグラフ114を示す。仮スケジュールグラフ114は、タスク情報111(図5参照)と、タスク情報111と共に取得された構成情報(図7参照)と、に基づいて生成される。
 「CPUn」は、分散処理装置300nのプロセッサ301を意味する。
 「ポートx-y」は、ポートxからポートyへの通信路を意味する。
 「スイッチ」は、転送装置102を意味する。
 「A」、「B」、「C」、「D」または「A’」が記された丸は、タスクを表している。
 「Tn」は、実行結果の通信nを表している。
 「Sn」は、転送用のタスクnを表している。
 仮スケジュールグラフ114は、例えば、以下のような仮スケジュールを表す。
 タスクAには、実行時間「0~10」が割り当てられる。
 通信T5には、実行時間「10~15」が割り当てられる。
 タスクS3には、実行時間「10」が割り当てられる。タスクSnによるタイムラグがゼロであると仮定する。実際の処理に応じて、転送の遅延およびバッファリングの遅延が加えられてもよい。
 通信T6には、実行時間「10+α~15+α」が割り当てられる。「α」は1フレーム分の通信時間を意味する。
 タスクDには、実行時間「10~20」が割り当てられる。
 図4に戻り、ステップS200から説明を続ける。
 ステップS200において、スケジューリング装置200の競合解消部213は、仮スケジュールとシステム情報とに基づいて、競合解消処理を実行する。
 競合解消処理は、仮スケジュールに指定された各タスクの実行時間と仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール391を生成する。
 競合解消処理(S200)の詳細について後述する。
 ステップS130において、各分散処理装置300にスケジュール391が設定される。
 例えば、スケジューリング装置200のスケジュール出力部220は、外部インタフェース204を介して、各分散処理装置300へスケジュール391を送信する。各分散処理装置300のスケジュール受付部319は、スケジュール391を受信し、スケジュール391を記憶部390に記憶する。この場合、スケジュール出力部220は、スケジュール391を分散処理装置300Aへ送信する。そして、分散処理装置300Aが、転送装置102を介して、分散処理装置300Bと分散処理装置300Cとのそれぞれにスケジュール391を送信する。
 例えば、スケジューリング装置200のスケジュール出力部220は、スケジュール391を記録媒体に書き込む。利用者は、記録媒体を用いて、各分散処理装置300にスケジュール391を入力する。そして、各分散処理装置300のスケジュール受付部319は、スケジュール391を受けつけ、スケジュール391を記憶部390に記憶する。
 ステップS140において、各分散処理装置300のプロセッサ301は、割り当てられた各タスクをスケジュール391に指定された各タスクの実行時間に実行する。
 さらに、各分散処理装置300のプロセッサ301は、割り当てられた各タスクの実行結果の通信をスケジュール391に指定された各通信の実行時間に実行する。
 具体的には、実行制御部311が、スケジュール391にしたがって、タスク実行部312と通信実行部313とを動作させる。
 タスク実行部312は、割り当てられた各タスクを実行する。
 通信実行部313は、割り当てられた各タスクの実行結果を通信する。
 機器制御部314は、対象機器101を制御するためのタスクが実行されたときに、タスクからの命令にしたがって対象機器101を制御する。
 実行制御部311は、タスク実行部312を以下のように動作させる。
 実行制御部311は、各時刻に、プロセッサ301がアイドル状態であるか判定する。
 プロセッサ301がアイドル状態である場合、実行制御部311は、スケジュール391を参照し、実行されていないタスクの有無を判定する。実行されていないタスクを未実行タスクと称する。
 1つ以上の未実行タスクが有る場合、実行制御部311は、スケジュール391を参照し、現在時刻から規定時間以内の開始時刻が割り当てられている未実行タスクの有無を判定する。現在時刻から規定時間以内の開始時刻が割り当てられている未実行タスクを実行対象タスクと称する。
 実行対象タスクが有る場合、実行制御部311は、タスク実行部312に実行対象タスクを実行させる。
 実行制御部311は、通信実行部313を以下のように動作させる。
 実行制御部311は、各時刻に、通信路が空いているか判定する。
 通信路が空いている場合、実行制御部311は、スケジュール391を参照し、実行されていない通信の有無を判定する。実行されていない通信を未実行通信と称する。
 1つ以上の未実行通信が有る場合、実行制御部311は、スケジュール391を参照し、現在時刻から規定時間以内の開始時刻が割り当てられている未実行通信の有無を判定する。現在時刻から規定時間以内の開始時刻が割り当てられている未実行通信を実行対象通信と称する。
 実行対象通信が有る場合、実行制御部311は、通信実行部313に実行対象通信を実行させる。
 図9および図10に基づいて、競合解消処理(S200)の流れを説明する。
 ステップS201において、競合解消部213は、処理の対象となる優先度の初期値を設定する。処理の対象となる優先度を対象優先度と称する。
 具体的には、競合解消部213は、最高優先度を対象優先度にする。これにより、優先度が高いタスクおよび通信から順にスケジュール割り当てが決定される。
 ステップS202において、競合解消部213は、未確定タスクおよび未確定通信の有無を判定する。
 未確定タスクは、実行時間が確定していないタスクである。
 未確定通信は、実行時間が確定していない通信である。
 実行時間は、開始時刻と終了時刻とによって特定される。
 未確定タスクと未確定通信との少なくともいずれかが有る場合、処理はステップS203に進む。
 未確定タスクと未確定通信とのいずれも無い場合、処理は終了する。
 ステップS203において、競合解消部213は、調整候補タスクおよび調整候補通信の有無を判定する。
 調整候補タスクは、対象優先度と同じタスク優先度を有し、実行可能状態であり、保留フラグが非保留(0)を示す未確定タスクである。
 実行可能状態は、前タスクが無いか、または、前タスクと前通信とのそれぞれの実行時間が確定している状態である。
 保留フラグは、保留(1)または非保留(0)を示す。保留フラグの初期値は非保留(0)である。
 調整候補通信は、対象優先度と同じ通信優先度を有し、実行可能状態であり、保留フラグが非保留(0)を示す未確定通信である。
 実行可能状態は、タスクの実行時間が確定している状態である。
 調整候補タスクと調整候補通信との少なくともいずれかが有る場合、処理はステップS205に進む。
 調整候補タスクと調整候補通信とのいずれも無い場合、処理はステップS204に進む。
 ステップS204において、競合解消部213は、対象優先度を1つ下げる。
 ステップS204の後、処理はステップS202に進む。
 ステップS205において、競合解消部213は、調整候補タスクと調整候補通信との中から最も実行順が早いタスクまたは通信を選択する。選択されるタスクまたは選択される通信を調整対象と称する。なお、優先度が高いタスクおよび通信から順にスケジュール割り当てが決定される方針において、調整対象の優先度以上の優先度を有するタスクおよび通信が開始時刻の早い順に調整対象との比較の対象となる。つまり、優先度が低いタスクおよび通信が、優先度が高いタスクおよび通信を避けて割り当てられる。
 調整対象がタスクである場合、処理はステップS300に進む。
 調整対象が通信である場合、処理はステップS400に進む。
 ステップS300において、競合解消部213は、タスク調整処理を実行する。
 タスク調整処理は、同じプロセッサ301に割り当てられたタスク間で実行時間の少なくとも一部が重複する場合に、優先度が低い方のタスクの実行時間を調整する。
 タスク調整処理(S300)の詳細について後述する。
 ステップS400において競合解消部213は、通信調整処理を実行する。
 通信調整処理は、同じ通信路を用いて実行される通信間で実行時間の少なくとも一部が重複する場合に優先度が低い方の通信の実行時間を調整する。
 通信調整処理(S400)の詳細について後述する。
 ステップS300またはステップS400の後、処理はステップS211に進む。
 ステップS211において、競合解消部213は、調整対象の保留フラグを判定する。
 調整対象の保留フラグが非保留(0)を示す場合、処理はステップS212に進む。
 調整対象の保留フラグが保留(1)を示す場合、処理はステップS202に進む。
 ステップS212において、競合解消部213は、各更新対象を判別し、各更新対象の実行時間を調整し、各更新対象の状態を更新する。
 更新対象について説明する。
 タスク調整処理(S300)が実行された場合、更新対象は、実行時間が調整されたタスクの実行後に実行される各タスクと、実行時間が調整されたタスクの実行後に実行される各通信である。
 通信調整処理(S400)が実行された場合、更新対象は、実行時間が調整された通信の実行後に実行される各タスクと、実行時間が調整されたタスクの実行後に実行される各通信である。
 各更新対象の実行時間は以下のように調整される。
 調整対象の実行時間が変更された場合、競合解消部213は、更新後の実行時間を基準にして、各更新対象の実行時間をずらす。
 各更新対象の状態は以下のように更新される。
 調整対象の実行時間が確定していない場合、競合解消部213は、各更新対象の状態を実行不能状態とする。
 ステップS213において、競合解消部213は、各未確定タスクの保留フラグと各未確定通信の保留フラグに非保留(0)を設定する。
 ステップS213の後、処理はステップS201に進む。
 図11および図12に基づいて、タスク調整処理(S300)の流れを説明する。
 調整対象であるタスクを対象タスクと称する。
 ステップS301において、競合解消部213は、同一優先度以上の共通タスクの有無を判定する。
 同一優先度以上の共通タスクは、対象タスクのタスク優先度以上のタスク優先度を有する共通タスクである。
 共通タスクは、対象タスクと割り当て先が共通するタスクである。
 同一優先度以上の共通タスクが有る場合、処理はステップS302に進む。
 同一優先度以上の共通タスクが無い場合、処理はステップS313に進む。
 ステップS302において、競合解消部213は、競合タスクの有無を判定する。
 競合タスクは、実行時間の少なくとも一部が対象タスクと重複する高優先度の共通タスクである。
 競合タスクが有る場合、処理はステップS303に進む。
 競合タスクが無い場合、処理はステップS311に進む。
 ステップS303において、競合解消部213は、対象タスクの実行時間を調整する。
 対象タスクの実行時間は以下のように調整される。
 対象タスクの実行順が競合タスクの実行順の前である場合、競合解消部213は、対象タスクの実行時間を競合タスクの実行時間の前の時間に変更する。
 対象タスクの実行順が競合タスクの実行順の後である場合、競合解消部213は、対象タスクの実行時間を競合タスクの実行時間の後の時間に変更する。
 対象タスクの保留フラグの値は非保留(0)のままである。
 ステップS303の後、処理は終了する。
 ステップS311において、競合解消部213は、可能性タスクの有無を判定する。
 可能性タスクは、対象タスクと競合する可能性があるタスクである。具体的には、可能性タスクは、実行時間が確定していない高優先度の共通タスクである。
 可能性タスクが有る場合、処理はステップS312に進む。
 可能性タスクが無い場合、処理はステップS313に進む。
 ステップS312において、競合解消部213は、対象タスクの保留フラグに保留(1)を設定する。
 ステップS312の後、処理は終了する。
 ステップS313において、競合解消部213は、対象タスクの実行時間を確定する。
 対象タスクの保留フラグの値は非保留(0)のままである。
 ステップS313の後、処理は終了する。
 図13、図14および図15に基づいて、通信調整処理(S400)を説明する。
 調整対象である通信を対象通信と称する。
 ステップS401において、競合解消部213は、同一優先度以上の共通通信が有るか判定する。
 同一優先度以上の共通通信は、対象通信の通信優先度以上の通信優先度を有する共通通信である。
 共通通信は、対象通信と通信路が共通する通信である。
 同一優先度以上の共通通信が有る場合、処理はステップS402に進む。
 同一優先度以上の共通通信が無い場合、処理はステップS404に進む。
 ステップS402において、競合解消部213は、競合通信の有無を判定する。
 競合通信は、実行時間の少なくとも一部が対象通信と重複する高優先度の共通通信である。
 競合通信が有る場合、処理はステップS403に進む。
 競合通信が無い場合、処理はステップS411に進む。
 ステップS403において、競合解消部213は、対象通信の実行時間を調整する。
 対象通信の実行時間は以下のように調整される。
 対象通信の実行順が競合通信の実行順の前である場合、競合解消部213は、対象通信の実行時間を競合通信の実行時間の前の時間に変更する。
 対象通信の実行順が競合通信の実行順の後である場合、競合解消部213は、対象通信の実行時間を競合通信の実行時間の後の時間に変更する。
 対象通信の保留フラグの値は非保留(0)のままである。
 ステップS403の後、処理は終了する。
 ステップS404において、競合解消部213は、対象通信の実行時間を確定する。
 対象通信の保留フラグの値は非保留(0)のままである。
 ステップS404の後、処理は終了する。
 ステップS411において、競合解消部213は、可能性通信の有無を判定する。
 可能性通信は、対象通信と競合する可能性がある通信である。具体的には、可能性通信は、実行時間が確定していない高優先度の共通通信である。
 可能性通信が有る場合、処理はステップS412に進む。
 可能性通信が無い場合、処理はステップS413に進む
 ステップS412において、競合解消部213は、対象通信の保留フラグに保留(1)を設定する。
 ステップS412の後、処理は終了する。
 ステップS413において、競合解消部213は、混在通信および分割通信の適用の可否を判定する。
 言い換えると、競合解消部213は、移行のステップに存在する混在通信および分割通信の判断を実施するための前準備が整っているかを確認する。具体的には、競合解消部213は、混在通信および分割通信の対象となる各競合通信の開始時刻が確定しているかを判断する。
 混在通信は、対象通信と混在する通信である。具体的には、混在通信は、対象通信の実行時間と一部が重複する実行時間が割り当てられている通信である。
 分割通信は、対象通信の分割を必要とする可能性通信である。具体的には、分割通信は、対象通信の実行時間内の実行時間が割り当てられている可能性通信である。
 混在通信および分割通信の適用が可能である場合、処理はステップS414に進む。
 混在通信および分割通信の適用が不可である場合、処理はステップS421に進む。
 ステップS414において、競合解消部213は、対象通信の開始時刻を判定する。
 対象通信の開始時刻が確定している場合、処理はステップS415に進む。
 対象通信の開始時刻が確定していない場合、処理はステップS416に進む。
 ステップS415において、競合解消部213は、対象通信の保留フラグに保留(1)を設定する。
 ステップS415の後、処理は終了する。
 ステップS416において、競合解消部213は、対象通信の開始時刻を確定する。
 対象通信の保留フラグの値は非保留(0)のままである。
 ステップS416の後、処理は終了する。
 ステップS421において、競合解消部213は、混在通信および分割通信の有無を判定する。
 混在通信と分割通信との両方が有る場合、処理はステップS423に進む。
 混在通信と分割通信との少なくとも一方が無い場合、処理はステップS422に進む。
 ステップS422において、競合解消部213は、対象通信の実行時間を確定する。
 対象通信の保留フラグの値は非保留(0)のままである。
 ステップS422の後、処理は終了する。
 ステップS423において、競合解消部213は、混在通信と分割通信とのうち開始時刻が早い方の通信を判定する。開始時刻が早い方の通信を先の通信と称する。
 先の通信が混在通信である場合、処理はステップS424に進む。
 先の通信が分割通信である場合、処理はステップS425に進む。
 ステップS424において、競合解消部213は、対象通信と混在通信とを1つの通信として扱う。つまり、競合解消部213は、対象通信と混在通信とを混在させた通信を生成する。
 対象通信の保留フラグの値は非保留(0)のままである。
 ステップS424の後、処理は終了する。
 ステップS425において、競合解消部213は、対象通信を前半の通信と後半の通信とに分割する。
 前半の通信は、分割通信の実行時間よりも前の時間の通信である。
 後半の通信は、対象通信から前半の通信を除いた残りの通信である。
 そして、競合解消部213は、対象通信の前半の実行時間を確定する。
 対象通信の保留フラグの値は非保留(0)のままである。
 ステップS425の後、処理は終了する。
***実施の形態1の効果***
 実施の形態1により、場当たり的に各タスクと各通信を実行せずに、計画的に各タスクと各通信とを実行することが可能となる。
***実施例1の説明***
 スケジューリング装置200は、優先フレームの通信時間を考慮してスケジュール391を生成してもよい。
 優先フレームは、各タスクの実行結果の通信よりも優先されるフレームである。具体的な優先フレームは、緊急フレームおよび定時フレームである。緊急フレームは、できるだけ早く通信されるべきフレームである。定時フレームは、通信タイミングが決まっているフレームである。
 具体的には、仮スケジュール決定部212は、優先フレーム用の通信時間を予約し、予約された通信時間以外の時間を各タスクおよび各通信に割り当てる。例えば、タスク情報111において優先フレームに最高優先度が与えられることによって、優先フレーム用の通信時間が確保される。
***実施例2の説明***
 ステップS110(図4参照)において、情報取得部211は、システム情報を自動で取得してもよい。
 例えば、実際のタスクまたは実際のタスクと同等のタスクを実行し、実際の通信または実際の通信と同等の通信を実行することによって、システム情報を自動で取得することが可能である。機器の細かな遅延等は算出して補正することができる。
***実施例3の説明***
 スケジューリング装置200は、各タスクの割り当て先を変更することによって、各分散処理装置300の最適なスケジュール391を生成してもよい。つまり、スケジューリング装置200は、各タスクの割り当て先を変更することによって、最適で最短で通信量が少ない時間割り当てを算出してもよい。最適なスケジュール391は、複数のタスクの全体の実行時間が最短であるスケジュール、および、複数のタスクの全体の通信量が最少であるスケジュールである。
 実施の形態2.
 1台の分散処理装置300で分散処理を実現する形態について、主に実施の形態1と異なる点を図16から図18に基づいて説明する。
***構成の説明***
 図16に基づいて、分散処理システム100Xの構成を説明する。
 分散処理システム100Xは、複数の分散処理装置(300A~300C)(図1参照)の代わりに、1台の分散処理装置300Xを備える。
 分散処理装置300Xは、複数の分散処理装置(300A~300C)を代替するために、マルチコアプロセッサを備える。
 図17に基づいて、分散処理装置300Xの構成を説明する。
 分散処理装置300Xは、複数のプロセッサ(301A~301C)を備えている。
 プロセッサ301Aは、分散処理装置300A(図1参照)を代替する。つまり、プロセッサ301Aは、対象機器101Aを制御する。
 プロセッサ301Bは、分散処理装置300B(図1参照)を代替する。つまり、プロセッサ301Bは、対象機器101Bを制御する。
 プロセッサ301Cは、分散処理装置300C(図1参照)を代替する。つまり、プロセッサ301Cは、対象機器101Cを制御する。
 複数のプロセッサ(301A~301C)のそれぞれは、実行制御部311とタスク実行部312と通信実行部313と機器制御部314とスケジュール受付部319といった要素を備える。
***動作の説明***
 図18に基づいて、分散処理方法を説明する。
 実施の形態2における分散処理方法は、実施の形態1における分散処理方法(図4参照)と同様である。
 但し、複数のタスクは、複数の分散処理装置300の代わりに、分散処理装置300Xの複数のプロセッサ301によって分散処理される。
***実施の形態2の効果***
 実施の形態2により、1台の分散処理装置300で分散処理を実現することが可能となる。
 実施の形態3.
 分散処理装置300においてタスクと通信とのそれぞれの実行開始のタイミングを調整する形態について、主に実施の形態1と異なる点を図19に基づいて説明する。
***構成の説明***
 図19に基づいて、分散処理装置300の構成を説明する。
 分散処理装置300は、さらに、タスク処理待機部315と通信待機部316とを備える。
 分散処理プログラムは、さらに、タスク処理待機部315と通信待機部316としてコンピュータを機能させる。
***動作の説明***
 実施の形態3における分散処理方法は、実施の形態1における分散処理方法(図4参照)と同様である。
 但し、ステップS120において、仮スケジュール決定部212は、各タスクの処理時間と各通信時間とのそれぞれにマージンを持たせて、仮スケジュールを生成する。その結果、ステップS200において、各タスクの処理時間と各通信時間とのそれぞれにマージンを持たせて、スケジュール391が生成される。
 また、ステップS140において、タスク処理待機部315と通信待機部316は以下のように動作する。
 タスク処理待機部315は、タスク実行部312が各タスクを実行する前に、スケジュール391に指定された各タスクの実行時間になるまでタスク実行部312を待機させる。例えば、タスク処理待機部315は、スケジュール391に指定された各タスクの実行時間になるまで、各タスクをタスク実行部312に入力しない。
 通信待機部316は、各タスクが実行された後に、スケジュール391に指定された各通信の実行時間になるまで通信実行部313を待機させる。例えば、通信待機部316は、スケジュール391に指定された各通信の実行時間になるまで、各タスクの実行結果を通信実行部313に入力しない。
***実施の形態3の効果***
 分散処理方法により、各タスクの処理時間から通信タイミングを推定し、通信スケジュールが策定される。しかし、タスクの開始タイミングが通信スケジュールと同期するものの、各プロセッサでのタスクの実行タイミングは、あくまで処理内容から見積もる処理時間、あるいは計測した処理時間である。そのため、プロセッサの特性によって、または、割り込み処理等の想定しない処理によって、処理時間が増減する可能性がある。あるいは、各タスクのインプット情報の変更によって、つまり、周期的に処理が行われていても制御対象の状態に応じて入力される情報が変化することによって、計算量が増減し、それにともない処理時間が増減する可能性がある。通信についても、送信すべきデータが漸減させる場合がある。また、スイッチ等において送信処理による遅延が送信タイミングごとに異なる可能性がある。このような現象が発生した場合、特定の期間に特定の優先度のフレームに対する送信許可をあたえるだけでは、意図しないタイミングでフレーム送信が開始される可能性がある。そのフレーム送信が同一の優先度の送信スケジュールと適合した場合、本来意図したタイミングと異なるタイミングでフレームが送信される。このフレームAの送信が本来そのタイミングで送信すべきフレームBの送信の妨げになると、従来予定していたスケジュールがずれ、スケジュールが破綻する。この問題点は、特定のタイミングでタスクの処理が実行されないことと、特定のタイミングでフレームが送信されないことである。加えて、タスクの処理および通信の処理が揺らぐ場合がある。
 これらの対処法として、分散処理装置300は、タスク処理待機部315と通信待機部316とを備える。これにより、分散処理装置300は、スケジュール391に従い、スケジュール391のタイミングに則って各タスクと各通信を実行することができる。また、揺らぎに対する対処法として、スケジューリング装置200は、揺らぎを想定した上で各タスクの処理時間と各通信時間にマージンを持たせてスケジュール391を生成することができる。
***実施例の説明***
 実施の形態3は、実施の形態2と組み合わせて実施されてもよい。複数の分散処理装置(300A~300C)を代替する1台の分散処理装置300Xが、タスク処理待機部315と通信待機部316とを備えてもよい。
***実施の形態の補足***
 図20に基づいて、スケジューリング装置200のハードウェア構成を説明する。
 スケジューリング装置200は処理回路209を備える。
 処理回路209は、スケジューリング部210とスケジュール出力部220とを実現するハードウェアである。
 処理回路209は、専用のハードウェアであってもよいし、メモリ202に格納されるプログラムを実行するプロセッサ201であってもよい。
 処理回路209が専用のハードウェアである場合、処理回路209は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGAまたはこれらの組み合わせである。
 ASICは、Application Specific Integrated Circuitの略称である。
 FPGAは、Field Programmable Gate Arrayの略称である。
 スケジューリング装置200は、処理回路209を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路209の機能を分担する。
 処理回路209において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
 このように、スケジューリング装置200の各機能はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
 図21に基づいて、分散処理装置300のハードウェア構成を説明する。
 分散処理装置300は処理回路309を備える。
 処理回路309は、実行制御部311とタスク実行部312と通信実行部313と機器制御部314とスケジュール受付部319とを実現するハードウェアである。
 処理回路309は、専用のハードウェアであってもよいし、メモリ302に格納されるプログラムを実行するプロセッサ301であってもよい。
 処理回路309が専用のハードウェアである場合、処理回路309は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGAまたはこれらの組み合わせである。
 分散処理装置300は、処理回路309を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路309の機能を分担する。
 処理回路309において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
 このように、分散処理装置300の各機能はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
 各実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。各実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
 各実施の形態で説明された各装置の要素である「部」は、「処理」または「工程」と読み替えてもよい。
 100 分散処理システム、101 対象機器、102 転送装置、111 タスク情報、112 有向グラフ、113 トポロジグラフ、114 仮スケジュールグラフ、200 スケジューリング装置、201 プロセッサ、202 メモリ、203 補助記憶装置、204 外部インタフェース、209 処理回路、210 スケジューリング部、211 情報取得部、212 仮スケジュール決定部、213 競合解消部、220 スケジュール出力部、290 記憶部、300 分散処理装置、301 プロセッサ、302 メモリ、303 補助記憶装置、304 外部インタフェース、309 処理回路、311 実行制御部、312 タスク実行部、313 通信実行部、314 機器制御部、315 タスク処理待機部、316 通信待機部、319 スケジュール受付部、390 記憶部、391 スケジュール。

Claims (8)

  1.  複数のタスクを複数のプロセッサによって分散処理する分散処理システムであって、
     前記複数のタスクの実行順と、各タスクの実行に要する処理量と、各タスクの実行結果を次のタスクに与えるための通信に要する通信量と、各タスクの優先度と、各通信の優先度と、各タスクが割り当てられるプロセッサを識別する割り当て先と、を示すタスク情報を取得する情報取得部と、
     前記複数のタスクの実行順と各タスクの処理量と各通信の通信量と各タスクの割り当て先とに基づいて、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する仮スケジュール、を決定する仮スケジュール決定部と、
     各タスクの優先度と各通信の優先度とに基づいて、前記仮スケジュールに指定された各タスクの実行時間と前記仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール、を生成する競合解消部と、
    を備える分散処理システム。
  2.  前記競合解消部は、同じプロセッサに割り当てられたタスク間で実行時間の少なくとも一部が重複する場合に優先度が低い方のタスクの実行時間を調整し、実行時間が調整されたタスクの実行後に実行される各タスクの実行時間と実行時間が調整されたタスクの実行後に実行される各通信の実行時間とを調整する
    請求項1に記載の分散処理システム。
  3.  前記競合解消部は、同じ通信路を用いて実行される通信間で実行時間の少なくとも一部が重複する場合に優先度が低い方の通信の実行時間を調整し、実行時間が調整された通信の実行後に実行される各タスクの実行時間と実行時間が調整された通信の実行後に実行される各通信の実行時間とを調整する
    請求項1または請求項2に記載の分散処理システム。
  4.  前記分散処理システムは、前記複数のプロセッサを備え、
     各プロセッサは、割り当てられた各タスクを前記スケジュールに指定された各タスクの実行時間に実行し、割り当てられた各タスクの実行結果の通信を前記スケジュールに指定された各通信の実行時間に実行する
    請求項1から請求項3のいずれか1項に記載の分散処理システム。
  5.  複数のタスクを複数のプロセッサによって分散処理するための分散処理方法であって、
     情報取得部が、前記複数のタスクの実行順と、各タスクの実行に要する処理量と、各タスクの実行結果を次のタスクに与えるための通信に要する通信量と、各タスクの優先度と、各通信の優先度と、各タスクが割り当てられるプロセッサを識別する割り当て先と、を示すタスク情報を取得し、
     仮スケジュール決定部が、前記複数のタスクの実行順と各タスクの処理量と各通信の通信量と各タスクの割り当て先とに基づいて、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する仮スケジュール、を決定し、
     競合解消部が、各タスクの優先度と各通信の優先度とに基づいて、前記仮スケジュールに指定された各タスクの実行時間と前記仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール、を生成する
    分散処理方法。
  6.  複数のタスクを複数のプロセッサによって分散処理するための分散処理プログラムであって、
     前記複数のタスクの実行順と、各タスクの実行に要する処理量と、各タスクの実行結果を次のタスクに与えるための通信に要する通信量と、各タスクの優先度と、各通信の優先度と、各タスクが割り当てられるプロセッサを識別する割り当て先と、を示すタスク情報を取得する情報取得処理と、
     前記複数のタスクの実行順と各タスクの処理量と各通信の通信量と各タスクの割り当て先とに基づいて、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する仮スケジュール、を決定する仮スケジュール決定処理と、
     各タスクの優先度と各通信の優先度とに基づいて、前記仮スケジュールに指定された各タスクの実行時間と前記仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール、を生成する競合解消処理と、
    をコンピュータに実行させるための分散処理プログラム。
  7.  複数のタスクの実行順と、各タスクの実行に要する処理量と、各タスクの実行結果を次のタスクに与えるための通信に要する通信量と、各タスクの優先度と、各通信の優先度と、各タスクが割り当てられるプロセッサを識別する割り当て先と、を示すタスク情報を取得する情報取得部と、
     前記複数のタスクの実行順と各タスクの処理量と各通信の通信量と各タスクの割り当て先とに基づいて、各タスクに割り当てられる実行時間と各通信に割り当てられる実行時間とを指定する仮スケジュール、を決定する仮スケジュール決定部と、
     各タスクの優先度と各通信の優先度とに基づいて、前記仮スケジュールに指定された各タスクの実行時間と前記仮スケジュールに指定された各通信の実行時間とを調整することによって、タスク間の競合と通信間の競合とが解消されたスケジュール、を生成する競合解消部と、
    を備えるスケジューリング装置。
  8.  複数のタスクを分散処理する分散処理システムに備わる分散処理装置であって、
     割り当てられた各タスクの実行時間と、割り当てられた各タスクの実行結果を次のタスクに与えるための通信の実行時間と、が指定されたスケジュールを受け付けるスケジュール受付部と、
     割り当てられた各タスクを前記スケジュールに指定された各タスクの実行時間に実行するタスク実行部と、
     割り当てられた各タスクの実行結果の通信を前記スケジュールに指定された各通信の実行時間に実行する通信実行部と、
    を備える分散処理装置。
PCT/JP2020/037780 2020-10-05 2020-10-05 分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置 WO2022074721A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2020/037780 WO2022074721A1 (ja) 2020-10-05 2020-10-05 分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置
JP2022554716A JP7170957B2 (ja) 2020-10-05 2020-10-05 分散処理システム、分散処理方法、分散処理プログラムおよびスケジューリング装置
TW110109534A TW202232315A (zh) 2020-10-05 2021-03-17 分散式處理系統、分散式處理方法、分散式處理程式產品、排程裝置以及分散式處理裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/037780 WO2022074721A1 (ja) 2020-10-05 2020-10-05 分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置

Publications (1)

Publication Number Publication Date
WO2022074721A1 true WO2022074721A1 (ja) 2022-04-14

Family

ID=81126699

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/037780 WO2022074721A1 (ja) 2020-10-05 2020-10-05 分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置

Country Status (3)

Country Link
JP (1) JP7170957B2 (ja)
TW (1) TW202232315A (ja)
WO (1) WO2022074721A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
JP2008003946A (ja) * 2006-06-23 2008-01-10 Cats Kk タイミングチャート作成支援システム、タイミングチャート作成支援方法及びタイミングチャート作成支援プログラム
JP2008242983A (ja) * 2007-03-28 2008-10-09 Sony Computer Entertainment Inc データ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラム
JP2017142647A (ja) * 2016-02-10 2017-08-17 日本電信電話株式会社 リソース管理装置及びリソース管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675786A (ja) * 1992-08-26 1994-03-18 Hitachi Ltd タスクスケジュリング方法
JP2008003946A (ja) * 2006-06-23 2008-01-10 Cats Kk タイミングチャート作成支援システム、タイミングチャート作成支援方法及びタイミングチャート作成支援プログラム
JP2008242983A (ja) * 2007-03-28 2008-10-09 Sony Computer Entertainment Inc データ処理装置、分散処理システム、データ処理方法、及びデータ処理プログラム
JP2017142647A (ja) * 2016-02-10 2017-08-17 日本電信電話株式会社 リソース管理装置及びリソース管理方法

Also Published As

Publication number Publication date
TW202232315A (zh) 2022-08-16
JP7170957B2 (ja) 2022-11-14
JPWO2022074721A1 (ja) 2022-04-14

Similar Documents

Publication Publication Date Title
US7350004B2 (en) Resource management device
US7080377B2 (en) Method for effective utilizing of shared resources in computerized system
US8364874B1 (en) Prioritized polling for virtual network interfaces
JPH08171526A (ja) 入出力インタフェース装置及びその制御方法
JP2007200245A (ja) システムバス制御装置、集積回路およびデータ処理システム
CN101271438A (zh) 用于在消息之间进行仲裁的数据处理装置和方法
US20190044883A1 (en) NETWORK COMMUNICATION PRIORITIZATION BASED on AWARENESS of CRITICAL PATH of a JOB
US20140068625A1 (en) Data processing systems
JP2002041449A (ja) バスシステム及びその実行順序の調整方法
US8185679B2 (en) Controlling bus access
US7594229B2 (en) Predictive resource allocation in computing systems
WO2022074721A1 (ja) 分散処理システム、分散処理方法、分散処理プログラム、スケジューリング装置および分散処理装置
JP2001216279A (ja) リアルタイム・システム用時分割多重メモリーを用いた、複数のプロセッサーのインターフェース及び、同期化及びアービトレーション方法
JP2005092780A (ja) リアルタイムプロセッサシステム及び制御方法
JP7146075B2 (ja) 複数のプロセッサ装置と複数のインターフェースを有するデータ処理装置
JP4414447B2 (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP2006215621A (ja) Dma制御装置
JP2021043931A (ja) コンピュータ装置及びデバッグ方法
JP2780662B2 (ja) マルチプロセッサシステム
JP2007018400A (ja) バス・システム、バス管理装置、ノード装置、およびバス管理装置用のプログラム
WO2024013811A1 (ja) スケジューリング方法および制御装置
JP2006251875A (ja) バス調停装置及びバス調停方法
WO2024070015A1 (ja) 電子制御装置、車両制御システム、及びタスクの制御方法
JP2007164713A (ja) リソース管理装置及びリソース管理方法
JP2008250419A (ja) 競合調停装置、マスタスレーブシステム及び競合調停方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20956670

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022554716

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20956670

Country of ref document: EP

Kind code of ref document: A1