WO2014027444A1 - Scheduling device and scheduling method - Google Patents

Scheduling device and scheduling method Download PDF

Info

Publication number
WO2014027444A1
WO2014027444A1 PCT/JP2013/004623 JP2013004623W WO2014027444A1 WO 2014027444 A1 WO2014027444 A1 WO 2014027444A1 JP 2013004623 W JP2013004623 W JP 2013004623W WO 2014027444 A1 WO2014027444 A1 WO 2014027444A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
priority
execution order
execution
tasks
Prior art date
Application number
PCT/JP2013/004623
Other languages
French (fr)
Japanese (ja)
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 JP2014530463A priority Critical patent/JP6156379B2/en
Publication of WO2014027444A1 publication Critical patent/WO2014027444A1/en

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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Definitions

  • the present invention relates to an apparatus and method for scheduling a plurality of cores, and more particularly to scheduling of core processes.
  • Multi-core LSI Large Scale Integration
  • a system or apparatus equipped with a multi-core is roughly classified into a contrast type multiprocessing (SMP) system and an asymmetric multiprocessing (AMP) system.
  • SMP contrast type multiprocessing
  • AMP asymmetric multiprocessing
  • the SMP method switches the core that executes the task according to the availability of the core and the priority of the task being executed. Based on this switching, the SMP method can execute each task on any core. That is, the SMP method can dynamically distribute the core load. Since dynamic load distribution is possible, the SMP method can improve the performance of the entire system. However, dynamic load balancing makes it difficult to predict real-time performance. Therefore, the SMP method is not suitable for application to a real-time system.
  • the AMP method is a function distributed type in which each task is executed on a specific core. Therefore, the AMP method is suitable for a real-time system in which it is important to be able to predict system behavior, a system in which a core to which specific hardware is connected is limited, and the like.
  • An example of a technique for utilizing an AMP multi-core system is a method using an automatic parallelizing compiler.
  • a static task scheduling method has been studied as an automatic parallelizing compiler.
  • a static task scheduling technique for example, there is a technique using the following processing.
  • this method divides a program into tasks.
  • a task graph in which the tasks and the dependency relationships between the tasks are expressed in a graph is created.
  • tasks are statically arranged with respect to the multicore using the created task graph.
  • the task execution order on each core is statically scheduled.
  • the list scheduling method can obtain good performance, particularly in a system that does not dynamically change the task scheduling on each core.
  • Patent Document 1 and Non-Patent Document 1 are based on the premise that the execution order of tasks on each core can be determined.
  • the RTOS dynamically determines the scheduling on each of the multi-core cores when the task is executed. Therefore, in such a system, when a plurality of tasks having the same priority can be executed simultaneously, the task to be actually executed is determined based on the scheduling state of the RTOS. That is, the task execution order is indeterminate.
  • Patent Document 1 The method of the automatic parallelizing compiler described in Patent Document 1 and Non-Patent Document 1 has a problem that the effect based on multicore cannot be obtained because the execution order is uncertain in a model that executes tasks on RTOS. It was.
  • a method using prioritization for each task is used.
  • the method of using prioritization uses n priorities, that is, the priority of the number of tasks to be executed, and prioritizes the tasks in descending order of priority. Add.
  • n priorities that is, the priority of the number of tasks to be executed
  • An object of the present invention is to provide a scheduling apparatus and a scheduling method for solving the above-described problems and reducing the number of necessary priorities while keeping the execution order based on static task scheduling. .
  • the task scheduling apparatus of the present invention is a statically determined task scheduling including a core layout indicating which of a plurality of cores a task is to be allocated and an execution order of the tasks on the core.
  • Static task scheduling generation means for generating task scheduling results, and the execution order of the static task scheduling results are examined in the order in which the tasks are executed.
  • the best execution order which is the order in which execution can be started earliest when it is assumed to be executed prior to the task, is compared with the execution order of the static task scheduling results, the execution order is different.
  • Static task schedule of the priority assignment task after the execution start time when executed in the best execution order A priority lower than all the tasks that are executed in advance by the execution start time in the execution order of the ring result is given to the priority assignment target task, and if the execution order does not change, the execution is executed in the best execution order.
  • the priority given to the task to be given priority is equal to or higher than the lowest priority of all the tasks prior to the task to be given priority after the execution start time, or the static task scheduling result
  • the worst execution order which is the order that can be started, is compared with the execution order of the static task scheduling result.
  • the worst execution order The priority is given higher priority than all tasks executed after the execution end time in the execution order of the static task scheduling result of the priority assignment target task before the execution end time when executed in Giving to the target task, if the execution order does not change, priority equal to or lower than the highest priority of all tasks following the priority assignment task before the execution end time when executed in the worst execution order
  • Priority generation means for assigning a degree to the priority assignment target task.
  • the task scheduling method of the present invention includes, in a multi-core apparatus including a plurality of cores, a core arrangement indicating which of a plurality of cores a task is to be allocated to, and an execution order of the tasks on the core
  • a task to which a priority is to be given is a task that gives a priority by generating a static task scheduling result in which task scheduling is statically determined, looking at the execution order of the static task scheduling result in the order in which the tasks are executed Is compared to the execution order of the static task scheduling result, and the execution order is the order in which the execution of the static task scheduling result can be started earliest. If they are different, the static task schedule of the prioritized task after the execution start time when executed in the best execution order.
  • the execution is executed in the best execution order.
  • the priority given to the task to be given priority is equal to or higher than the lowest priority of all the tasks prior to the task to be given priority after the execution start time, or the static task scheduling result.
  • the worst execution order which is the order that can be started, is compared with the execution order of the static task scheduling results.
  • the priority is higher than all the tasks that are executed after the execution end time in the execution order of the static task schedule result of the priority assignment target task before the execution end time when executed in order When assigned to a task to be granted and the execution order does not change, it is equal to or lower than the highest priority of all tasks following the priority assignment task before the execution end time when executed in the worst execution order A priority is assigned to the priority assignment target task.
  • the program of the present invention is a multi-core device including a plurality of cores, a task scheduling including a core arrangement indicating which of a plurality of cores a task is to be allocated, and an execution order of the tasks on the core
  • a process for generating a static task scheduling result that is statically determined, and a task to be given a priority which is a task for giving a priority by looking at the execution order of the static task scheduling result in the order in which the tasks are executed Is compared to the execution order of the static task scheduling result, and the execution order is the order in which the execution of the static task scheduling result can be started earliest. If they are different, the static task schedule of the priority assignment task after the execution start time when executed in the best execution order.
  • the priority assignment task is given a lower priority than all tasks executed prior to the execution start time in the execution order of the execution results, and if the execution order does not change, it is executed in the best execution order. Processing for giving a priority equal to or higher than the lowest priority of all tasks preceding the priority assignment task after the execution start time in the case of the execution of the priority assignment target task, or the static task scheduling Look at the execution order of the results from the order in which the tasks are executed, and execute the latest when assuming that other tasks are executed in preference to the priority assignment task that is the task to which priority is given Is compared with the execution order of the static task scheduling result, and when the execution order is different, the worst execution order
  • the priority is given higher priority than all tasks executed after the execution end time in the execution order of the static task schedule result of the priority assignment target task before the execution end time when executed in Giving to the target task, if the execution order does not change, priority equal to or lower than the highest priority of all tasks following the priority assignment task before the execution end time when executed in the worst execution order And
  • FIG. 1 is a block diagram showing an example of the configuration of the multi-core system according to the first embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating an example of the configuration of the task scheduling apparatus according to the first embodiment.
  • FIG. 3 is a flowchart illustrating an example of the operation of the task scheduling apparatus according to the first embodiment.
  • FIG. 4 is a block diagram illustrating an example of the configuration of the task scheduling apparatus according to the first embodiment.
  • FIG. 5 is a block diagram illustrating an example of a configuration of a priority generation unit according to the second embodiment.
  • FIG. 6 is a flowchart illustrating an example of the operation of the priority generation unit according to the second embodiment.
  • FIG. 7 is a diagram illustrating an example of a static task scheduling result used for explanation.
  • FIG. 1 is a block diagram showing an example of the configuration of the multi-core system according to the first embodiment of the present invention.
  • FIG. 2 is a block diagram illustrating an example of the configuration of the task scheduling apparatus according to
  • FIG. 8 is a diagram for explaining the operation according to the second embodiment.
  • FIG. 9 is a diagram for explaining an operation according to the second embodiment.
  • FIG. 10 is a diagram for explaining an operation according to the second embodiment.
  • FIG. 11 is a diagram for explaining an operation according to the second embodiment.
  • FIG. 12 is a diagram for explaining an operation according to the second embodiment.
  • FIG. 13 is a diagram for explaining an operation according to the second embodiment.
  • FIG. 14 is a flowchart illustrating an example of the operation of the priority generation unit according to the third embodiment.
  • FIG. 15 is a diagram for explaining the operation according to the third embodiment.
  • FIG. 16 is a diagram for explaining an operation according to the third embodiment.
  • FIG. 17 is a diagram for explaining an operation according to the third embodiment.
  • FIG. 15 is a diagram for explaining the operation according to the third embodiment.
  • FIG. 18 is a diagram for explaining an operation according to the third embodiment.
  • FIG. 19 is a diagram for explaining an operation according to the third embodiment.
  • FIG. 20 is a diagram for explaining an operation according to the third embodiment.
  • FIG. 21 is a flowchart illustrating an example of the operation of the priority generation unit according to the fourth embodiment.
  • FIG. 22 is a diagram illustrating an example of a static task scheduling result used for explanation.
  • FIG. 23 is a diagram illustrating a result of the second embodiment referred to in the description.
  • FIG. 24 is a diagram for explaining the operation according to the fourth embodiment.
  • FIG. 25 is a diagram for explaining an operation according to the fourth embodiment.
  • FIG. 26 is a diagram for explaining an operation according to the fourth embodiment.
  • FIG. 27 is a diagram for explaining the operation according to the fourth embodiment.
  • FIG. 28 is a diagram for explaining an operation according to the fourth embodiment.
  • FIG. 29 is a diagram for explaining an operation according to the fourth embodiment.
  • FIG. 30 is a diagram for explaining an operation according to the fourth embodiment.
  • FIG. 31 is a block diagram illustrating an example of a configuration of a task scheduling apparatus according to the fifth embodiment.
  • FIG. 32 is a flowchart illustrating an example of the operation of the task scheduling apparatus according to the fifth embodiment.
  • FIG. 33 is a diagram for explaining the operation according to the fifth embodiment.
  • FIG. 34 is a diagram for explaining an operation according to the fifth embodiment.
  • FIG. 35 is a diagram for explaining an operation according to the fifth embodiment.
  • FIG. 36 is a diagram for explaining the operation according to the fifth embodiment.
  • FIG. 37 is a diagram for explaining the operation according to the fifth embodiment.
  • FIG. 38 is a diagram for explaining the operation according to the fifth embodiment.
  • the processing unit executed by the core is not particularly limited.
  • the processing unit may be a task or a thread.
  • the processing unit may be an application program in which tasks or threads are collected.
  • these processing units will be collectively described as “tasks”. Therefore, in the following description of the embodiment, the scheduling device of the present invention will be described as a task scheduling device.
  • FIG. 1 is a block diagram showing an example of the configuration of a multi-core system 1 according to the first embodiment of the present invention.
  • the multi-core system 1 includes a task scheduling device 10, a core unit 20, and a task memory 30.
  • the core unit 20 includes a plurality of cores. Based on the scheduling generated by the task scheduling device 10, the core is assigned a task and executes the assigned task.
  • Task scheduling device 10 schedules a task and causes a predetermined core to execute the task, as will be described in detail later.
  • Task memory 30 stores tasks executed by the core.
  • the multi-core system 1 may be an embedded LSI in which all configurations are incorporated.
  • the multi-core system 1 may be an LSI system in which a plurality of LSIs including one or more functions are connected by signal lines.
  • the multi-core system 1 may be a system in which a plurality of devices including one or more functions are connected by a bus or a communication line.
  • the task scheduling apparatus 10 shown in FIG. 1 is included in the multi-core system 1.
  • the task scheduling apparatus 10 of this embodiment is not limited to this.
  • the task scheduling apparatus 10 may not be included in the multicore system 1. That is, the multi-core system 1 may be configured not to include the task scheduling device 10.
  • the task scheduling apparatus 10 of the present embodiment creates task scheduling in advance. Then, the task scheduling apparatus 10 stores the created task scheduling in a storage device (not shown).
  • the multi-core system 1 may extract and use the created task scheduling from a storage device (not shown) when executing the task.
  • FIG. 2 is a block diagram showing an example of the configuration of the task scheduling apparatus 10.
  • the task scheduling apparatus 10 includes a static task scheduling generation unit 11 and a priority generation unit 12.
  • FIG. 2 shows functions related to the present invention, and other functions such as a multi-core selection function related to a task are omitted.
  • the static task scheduling generation unit 11 statically determines (generates) the core arrangement indicating which core the task is to be allocated to and the execution order of the task on each core. That is, the static task scheduling generation unit 11 generates a static task scheduling.
  • the priority generation unit 12 gives a priority to (assigns / generates) a task so that each task is executed according to the execution order on each core determined by the static task scheduling generation unit 11.
  • the priority generation unit 12 of this embodiment does not give different priorities to all tasks, but gives priorities to tasks so as to reduce the number of priorities to be used. This prioritization will be described later.
  • FIG. 3 is a flowchart showing an example of the operation of the task scheduling apparatus 10.
  • the static task scheduling generation unit 11 of the task scheduling apparatus 10 generates (determines) static task scheduling (step S100).
  • the static task scheduling generation unit 11 statically determines (generates) the following items as static task scheduling.
  • the result of static task scheduling may be referred to as “static task scheduling result”.
  • (2) Task execution order on each core Note that the static task scheduling generation unit 11 of this embodiment uses static task scheduling.
  • the static task scheduling generation unit 11 may use the technology described in Patent Document 1 or Non-Patent Document 1 already described.
  • the priority generation unit 12 of the task scheduling apparatus 10 assigns priorities to the tasks so that the tasks are executed in the execution order determined by the static task scheduling generation unit 11 (above (2)) ( Priority is generated) (step S101). However, the priority generation unit 12 of the present embodiment assigns priorities so as to reduce the number of priorities set for tasks.
  • the priority generation unit 12 assigns the highest priority (highest priority) to the task to be executed first (hereinafter referred to as “first task”). Then, the priority generation unit 12 lowers the priority given to the task as it goes to (follows) the task behind the static task scheduling result. Using such priority assignment, the priority generation unit 12 maintains the task execution order.
  • the priority generation unit 12 does not lower the priority to be assigned to the subsequent task in a portion where the execution order does not change regardless of the priority to be given. More specifically, the priority generation unit 12 determines the priority to be given to the subsequent task as the priority of the previous task for a portion where the execution order does not change regardless of the priority to be given. Equal or higher.
  • the priority generation unit 12 assigns the highest possible priority (most preferably, the highest priority equivalent to the priority of the head task). This is based on the following reason.
  • the priority generation unit 12 can assign the priority set for the task following the task from the priority following the high priority. Therefore, the priority generation unit 12 can reduce the number of priorities necessary for assigning tasks.
  • the operation of the priority generation unit 12 will be described in detail.
  • the priority generation unit 12 obtains the “best execution order” that is the order in which execution can be started earliest when it is assumed that the task to be given priority is executed with priority over other tasks.
  • the priority generation unit 12 compares the best execution order of each task from the top task with the execution order of the static task scheduling result. If the execution order is different as a result of the comparison, the task is a task whose execution order may change. On the other hand, if the execution order is the same as a result of the comparison, the task is a task that cannot change the execution order.
  • the priority generation unit 12 operates as follows. First, the priority generation unit 12 executes after the execution start time when the task is executed in the best execution order and before the execution start time in the execution order of the static task scheduling result of the task. All priorities of tasks (hereinafter referred to as “previous execution tasks”) are examined. Then, the priority generation unit 12 gives a priority lower than the priorities of all the preceding execution tasks to the task. In summary, the priority generation unit 12 gives the task a priority lower than the priorities of all preceding execution tasks of the task.
  • the priority generation unit 12 makes the priority of the preceding task relatively higher than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 maintains the task execution order.
  • the priority generation unit 12 has a priority (already equal to or lower than the lowest priority of all tasks preceding the task). The highest priority is preferred) as given. That is, the priority generation unit 12 makes the priority of the preceding task relatively equal or lower than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 reduces the number of necessary priorities.
  • the priority generation unit 12 gives the lowest priority (lowest priority) to the task that is executed last (hereinafter referred to as “final task”). And the priority generation part 12 raises the priority provided to a task according to going to the task before the static task scheduling result (returning). Using such priority assignment, the priority generation unit 12 maintains the task execution order.
  • the priority generation unit 12 does not increase the priority to be assigned to the previous task in a portion where the execution order does not change regardless of the priority to be given. More specifically, the priority generation unit 12 equals the priority given to the previous task to the priority of the subsequent task in a portion where the execution order does not change regardless of the priority given. Or lower.
  • the priority generation unit 12 assigns the lowest possible priority (most preferably, the lowest priority equivalent to the priority of the final task). This is based on the following reason.
  • the priority generation unit 12 can assign the priority set for the task preceding the task from the priority following the low priority. Therefore, the priority generation unit 12 can reduce the number of priorities necessary for giving to tasks.
  • the operation of the priority generation unit 12 will be described in detail.
  • the priority generation unit 12 obtains the “worst execution order” that is the order in which execution can be started at the latest when it is assumed that other tasks are executed with priority over the task to be given priority.
  • the priority generation unit 12 compares the worst execution order of each task with the execution order of the static task scheduling result from the last task. If the order is different as a result of the comparison, the task is a task whose execution order may change. On the other hand, when the order is the same as a result of the comparison, the task is a task that cannot change the execution order.
  • the priority generation unit 12 operates as follows. First, the priority generation unit 12 executes a task that is executed before the execution end time when the task is executed in the worst execution order and subsequent to the execution end time in the execution order of the static task scheduling result of the task. All the priorities (hereinafter referred to as “subsequent execution tasks”) are checked. Then, the priority generation unit 12 gives a priority higher than the priority of all subsequent execution tasks to the task. In summary, the priority generation unit 12 gives a priority higher than the priority of all subsequent execution tasks of the task.
  • the priority generation unit 12 makes the priority of the preceding task relatively higher than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 maintains the execution order of tasks.
  • the priority generation unit 12 has a priority equal to or lower than the priority of all the tasks subsequent to the task (described above). Is given to the task). That is, the priority generation unit 12 makes the priority of the preceding task relatively equal or lower than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 reduces the number of necessary priorities.
  • the priority generation unit 12 preferably calculates the worst execution order after excluding tasks that are further subordinate to the subsequent task from the examination target.
  • the priority generation unit 12 may use, for example, a numerical value of the task execution order as the best execution order or the worst execution order.
  • the execution order used by the priority generation unit 12 of the present embodiment is not limited to the task execution order.
  • the execution order used by the priority generation unit 12 is not limited in the expression form as long as the order generation task 12 can determine the task order relationship such as the task execution start time or the execution end time. For example, when a task is activated while another high priority is given during execution of a certain task, the execution transitions to the activated task. In such a case, the priority generation unit 121 cannot simply represent the order as a sequence of tasks. In such a case, the priority generation unit 12 may use an expression using time as the execution order.
  • the configuration of the task scheduling apparatus 10 of the present embodiment is not limited to the configuration shown in FIG. Each configuration may be further divided into a plurality of configurations. Alternatively, the task scheduling apparatus 10 may include the configuration illustrated in FIG. 2 in one configuration.
  • the hardware configuration of the task scheduling apparatus 10 of the present embodiment is not particularly limited.
  • the task scheduling apparatus 10 may be realized as a computer including a CPU (Central Processing Unit), a ROM (Read Only Memory), and a RAM (Random Access Memory).
  • CPU Central Processing Unit
  • ROM Read Only Memory
  • RAM Random Access Memory
  • FIG. 4 is a diagram illustrating an example of a hardware configuration of the task scheduling apparatus 60 that operates in the same manner as the task scheduling apparatus 10 of the present embodiment.
  • the task scheduling device 60 includes a CPU 610, a ROM 620, a RAM 630, a storage device 640, an IO (Input / Output) 650, an input device 660, and a display device 670, and constitutes a computer.
  • the CPU 610 reads a program from the ROM 620 or the storage device 640.
  • the CPU 610 realizes each function as the static task scheduling generation unit 11 and the priority generation unit 12 of the task scheduling apparatus 10 illustrated in FIG. 2 based on the read program.
  • the CPU 610 uses the RAM 630 and the storage device 640 as temporary storage when realizing each function.
  • the CPU 610 receives input data from the input device 660 via the IO 650 and displays the data on the display device 670.
  • the CPU 610 may read a program included in the storage medium 700 storing a computer-readable program using a storage medium reading device (not shown). Alternatively, the CPU 610 may receive a program from an external device via a network (not shown).
  • ROM 620 stores programs executed by CPU 610 and fixed data.
  • the ROM 620 is, for example, a P-ROM (Programmable-ROM) or a flash ROM.
  • the RAM 630 temporarily stores programs executed by the CPU 610 and data.
  • the RAM 630 is, for example, a D-RAM (Dynamic-RAM).
  • the storage device 640 stores data and programs stored in the task scheduling device 60 for a long time. In addition, the storage device 640 may operate as a temporary storage device for the CPU 610.
  • the storage device 640 is, for example, a hard disk device, a magneto-optical disk device, an SSD (Solid State Drive), or a disk array device.
  • the IO 650 mediates data between the CPU 610, the input device 660, and the display device 670.
  • the IO 650 is, for example, an IO interface card.
  • the input device 660 is an input unit that receives an input instruction from an operator of the task scheduling device 60.
  • the input device 660 is, for example, a keyboard, a mouse, or a touch panel.
  • the display device 670 is a display unit of the task scheduling device 60.
  • the display device 670 is a liquid crystal display, for example.
  • the 4 may include the functions of the core unit 20 and the task memory 30 illustrated in FIG. 1 in addition to the functions as the task scheduling apparatus 10, and may operate as the multi-core system 1.
  • the CPU 610 includes the core unit 20 shown in FIG. 1, that is, a plurality of cores.
  • the task scheduling device 60 may use the built-in memory as the task memory 30.
  • the task scheduling device 60 may use the RAM 630 or the storage device 640 as the task memory 30.
  • the task scheduling apparatus 10 of the present embodiment configured as described above can obtain an effect of reducing the number of priorities necessary for maintaining the execution order while maintaining the execution order based on the static task scheduling result. it can.
  • the task scheduling apparatus 10 of this embodiment determines a static task scheduling result. Then, the task scheduling apparatus 10 classifies each task into a place (task) where the execution order can be changed based on the priority of the task and a place (task) where the execution order cannot be changed regardless of the priority.
  • the task scheduling apparatus 10 gives the priority so that the priority of the preceding task is relatively higher than the priority of the subsequent task. Therefore, the task scheduling apparatus 10 can maintain the task execution order.
  • the task scheduling apparatus 10 makes the priority of the preceding task relatively equal to or lower than the priority of the subsequent task.
  • the task scheduling apparatus 10 assigns a priority equal to or higher than the lowest priority of all preceding tasks.
  • the task scheduling apparatus 10 assigns a priority equal to or lower than the highest priority of all subsequent tasks. Therefore, the task scheduling apparatus 10 can reduce the number of necessary priorities.
  • the method used by the task scheduling apparatus 10 of the present embodiment is a method of defining the priority from the top task in the execution order based on the static task scheduling result, and includes the following operations: .
  • the task scheduling apparatus 10 classifies a place where the execution order can change based on the priority of each task and a place where the execution order does not change based on the priority.
  • the task scheduling device 10 defines the priority of the subsequent task lower than the priority of the preceding task at a place where the execution order can be changed. Based on this operation, the task scheduling apparatus 10 maintains the task execution order.
  • the task scheduling apparatus 10 does not lower the priority of the subsequent task with respect to the priority of the preceding task at a place where the execution order does not change. Based on this operation, the task scheduling apparatus 10 suppresses the number of necessary priorities.
  • the priority generation unit 12 of the task scheduling apparatus 10 of the present embodiment includes the configuration shown in FIG.
  • the configuration of the task scheduling apparatus 10 of this embodiment is the same as that of the first embodiment except for the configuration of the priority generation unit 12 shown in FIG.
  • FIG. 5 is a block diagram showing an example of the configuration of the priority generation unit 12 of the present embodiment.
  • the priority generation unit 12 includes a priority control unit 121, a priority assignment target task holding unit 122, and a priority holding unit 123.
  • the priority control unit 121 controls the process of setting (giving) task priority.
  • the priority assignment target task holding unit 122 holds information indicating which task the priority assignment target task is.
  • the priority holding unit 123 holds the priority value set for the task.
  • the priority holding unit 123 includes at least an area for holding a priority value of the number of tasks for which priority is set.
  • the task scheduling apparatus 10 of the present embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
  • FIG. 6 is a flowchart showing an example of the operation of the priority generation unit 12 of the present embodiment.
  • the priority generation unit 12 performs the process shown in FIG. 6 for each core to be scheduled. Note that the highest priority used for task scheduling may be set in the task scheduling apparatus 10 in advance.
  • the priority control unit 121 sets the highest priority used for task scheduling (step S201).
  • the priority control unit 121 may use any value as the highest priority. Further, as described above, the priority control unit 121 may have the highest priority set in advance. Alternatively, the priority control unit 121 may remove the priority required for processing more important than the task set by task scheduling, and set the highest priority among the remaining available priorities as the highest priority. .
  • the priority control unit 121 selects tasks in order from the top in the static task scheduling result.
  • the selected task is referred to as a “priority assignment target task”.
  • the priority control unit 121 sets the priority assignment target task in the priority assignment target task holding unit 122 (step S202).
  • the priority control unit 121 checks the possibility of change in the execution order of the priority assignment target tasks (step S203).
  • the priority control unit 121 obtains the best execution order that is the order in which execution can be started earliest when it is assumed that the priority assignment target task is executed with priority over other tasks. Then, the priority control unit 121 compares the best execution order with the execution order of the static task scheduling result.
  • the priority control unit 121 determines that the execution order may change. On the other hand, when the execution order is equal, the priority control unit 121 determines that the execution order cannot change.
  • the priority control unit 121 assigns a priority lower than the priorities of all the prior execution tasks of the priority assignment target task to the priority assignment target task. (Step S204).
  • the priority control unit 121 sets a value with a large numerical value of priority, Set in the task to be given priority. This lowers the priority of the priority assignment target task.
  • the priority control unit 121 desirably has a value that lowers (lowers) the priority by one as the low priority. This is because when the setting is made in this way, the priority that is not used does not occur and the number of the priorities to be used is reduced.
  • the priority control unit 121 stores the assigned priority in the priority assignment target task area of the priority holding unit 123.
  • the priority control unit 121 maintains the task execution order.
  • Step S203 when the execution order cannot be changed (No in Step S203), the priority control unit 121 does not lower the priority given to the priority assignment target task (Step S205).
  • the priority control unit 121 precedes the task to be given priority. Give the task priority the same or lower value.
  • the priority control unit 121 sets the highest priority value as the priority. However, the priority control unit 121 may give a priority higher than the current priority other than the highest priority, if necessary, and may make the priorities equal.
  • the priority control unit 121 stores the assigned priority in the priority assignment target area of the priority holding unit 123.
  • the priority control unit 121 reduces the number of necessary priorities.
  • the priority control unit 121 determines whether or not the prioritization has been completed for all the tasks of the scheduling target core (step S206).
  • step S206 the priority control unit 121 ends the priority assignment processing.
  • step S206 the priority control unit 121 returns to step S202 and sets the next task (next task) of the static task scheduling result as a priority assignment target task. The above processing is repeated.
  • FIG. 7 is a diagram showing an example of a static task scheduling result used for explanation.
  • FIG. 7 shows two cores, core 0 and core 1. It is assumed that the priority control unit 121 gives priority to the task of the core 0. On the core 0, as shown in FIG. 7, six tasks from task A to task F are arranged. The display of the task of core 1 is omitted. In addition, the dependency relationship between the tasks is indicated by a dashed arrow. This dependency relationship is a relationship that allows the task at the end of the arrow to be executed after the task at the base of the arrow is completed.
  • Task A is the top task.
  • the task B is a task that can be executed after completion of the task of the core 1 (not shown).
  • Task C is an executable task after task A is completed.
  • Task D is an executable task after task A is completed.
  • Task E is an executable task after task D is completed.
  • Task F is the final task and is an executable task after task D is completed.
  • the priority of a task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, a task having a low priority value is executed. If the priority of a task with a small numerical value is low, the numerical value may be switched. The highest priority is “3”. (In other words, the minimum priority value is “3”.) Next, the operation of the priority control unit 121 will be described with reference to the drawings using the static task scheduling result shown in FIG.
  • FIG. 8 to 13 are diagrams for explaining the priorities set by the priority control unit 121.
  • FIG. The numerical value in the figure is the priority set for the task.
  • the priority control unit 121 defines (assigns) the priority of the task A that is the first task of the static task scheduling result. (This means that the priority control unit 121 sets task A as a priority assignment target task.) Task A is the first task. Therefore, the priority control unit 121 defines “3” which is the highest priority for the task A (FIG. 8).
  • the priority control unit 121 sets a task B to be executed next to the task A as a priority assignment target task. Then, the priority control unit 121 determines the task B execution order change possibility. More specifically, the priority control unit 121 determines whether or not there is a possibility that the task B is executed before the scheduled time.
  • the task B is not executed before the scheduled execution position based on the dependency relationship with the core 1. That is, the best execution order of task B is the same as the execution order of the static task scheduling results shown in the figure. Therefore, the priority control unit 121 determines that there is no possibility that the execution order of the task B is changed.
  • the priority control unit 121 does not perform the process of lowering the priority of the task B from the preceding task A, and sets the priority of the task B to “3” (FIG. 9).
  • the priority control unit 121 sets task C to be executed next to task B as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task C.
  • Task C has a dependency relationship with task A, but has no dependency relationship with task B. Therefore, based on the priority, task C may be replaced with task B and executed before. That is, the best execution order of task C is immediately after task A. This order is different from the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the execution order of the task C may be changed.
  • the priority control unit 121 gives a lower priority to the task C than all the preceding execution tasks of the task C.
  • the task B preceding execution task is task B. Therefore, the priority control unit 121 sets the priority of task C to “4”, which is lower than the priority “3” of task B (FIG. 10).
  • the priority control unit 121 sets the task D executed next to the task C as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task D.
  • Task D has a dependency relationship with task A, but has no dependency relationship with task B and task C. Therefore, based on the priority, task D may be replaced with task B and task C and executed before. That is, the best execution order of task D is immediately after task A. This order is different from the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the execution order of the task D may change.
  • the priority control unit 121 gives a lower priority to the task D than all the preceding execution tasks of the task D.
  • the pre-execution tasks for task D are task B and task C. Therefore, the priority control unit 121 sets the priority of the task D to “5”, which is lower than the priority “4” of the task C (FIG. 11).
  • the priority control unit 121 sets a task E to be executed next to the task D as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task E.
  • Task E has a dependency relationship with Task A and Task D. Therefore, the best execution order of task E is immediately after task D. Task E is immediately after the same task D in the static task scheduling result. As a result, the priority control unit 121 determines that there is no possibility that the execution order of the task E changes.
  • the priority control unit 121 gives the highest priority “3” that can be set without lowering the priority of the task E from the priority of the preceding task D (FIG. 12).
  • the priority control unit 121 sets a task F executed next to the task E as a priority assignment target task. Then, the priority control unit 121 determines the possibility of task F execution order fluctuation.
  • Task F has a dependency relationship with task D, but has no dependency relationship with task E. Therefore, based on the priority, task F may be replaced with task E and executed before. That is, the best execution order of task F is immediately after task D. This order is different from the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the execution order of the task F may be changed.
  • the priority control unit 121 gives a lower priority to the task F than all the preceding execution tasks of the task F.
  • the task F preceding execution task is task E. Therefore, the priority control unit 121 sets the priority of the task F to “4”, which is lower than the priority “3” of the task E (FIG. 13).
  • the task scheduling apparatus 10 of the second embodiment configured as described above can obtain an effect of generating many tasks with high priority in addition to the effect of the first embodiment.
  • the task scheduling apparatus 10 of the second embodiment defines (assigns) priorities from the first task executed at the beginning of the static task scheduling result that sets a high priority. .
  • the task scheduling apparatus 10 of this embodiment is particularly effective when it is desired to secure the priority value in the low priority area as much as possible.
  • the method used by the task scheduling apparatus 10 of the present embodiment is a method of defining priority from the final task in the execution order based on the static task scheduling result, and includes the following operations.
  • the task scheduling apparatus 10 classifies a place where the execution order can change based on the priority of each task and a place where the execution order does not change based on the priority.
  • the task scheduling apparatus 10 defines the priority of the preceding task higher than the priority of the subsequent task at a place where the execution order can be changed. Based on this operation, the task scheduling apparatus 10 maintains the execution order.
  • the task scheduling apparatus 10 does not increase the priority of the preceding task in a place where the execution order does not change. Based on this operation, the task scheduling apparatus 10 suppresses the number of necessary priorities.
  • the configuration of the task scheduling apparatus 10 of the present embodiment is the same as that of the second embodiment, and thus the description of the configuration is omitted.
  • the task scheduling apparatus 10 of the present embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
  • FIG. 14 is a flowchart showing an example of the operation of the priority generation unit 12 of the present embodiment.
  • the priority generation unit 12 performs the process shown in FIG. 14 for each core to be scheduled. Note that the minimum priority used in task scheduling may be set in the task scheduling apparatus 10 in advance.
  • the priority control unit 121 sets the lowest priority used for task scheduling (step S301).
  • the priority control unit 121 may use any value as the lowest priority. Further, as described above, the priority control unit 121 may have a minimum priority set in advance. Alternatively, the priority control unit 121 may remove the priority required for processing more important than the task set by task scheduling, and set the lowest priority among the remaining available priorities as the lowest priority. .
  • the priority control unit 121 selects tasks in order from the back of the execution order of the static task scheduling results.
  • the selected task is a “priority assignment target task”.
  • the priority control unit 121 sets a priority assignment target task in the priority assignment target task holding unit 122 (step S302).
  • the priority control unit 121 examines the possibility of change in the execution order of the priority assignment target tasks (step S303).
  • the priority control unit 121 first excludes tasks that are further subordinate to the subsequent task from the examination target. Then, the priority control unit 121 obtains the worst execution order, which is the order in which execution can be started latest, assuming that other tasks are executed with priority over the priority assignment target task. Then, the priority control unit 121 compares the worst execution order with the execution order of the static task scheduling result.
  • the priority control unit 121 determines that the execution order may change. On the other hand, when the execution order is equal, the priority control unit 121 determines that the execution order cannot change.
  • the priority control unit 121 assigns a priority higher than all the subsequent execution tasks of the priority assignment target task to the priority assignment target task (step S303). S304). For example, if the priority value given to a task with high priority is small and the priority value given to a task with low priority is large, the priority control unit 121 sets a value with a low priority value to Set in the task to be given priority. This raises the priority of the priority assignment target task. Note that the priority control unit 121 desirably sets the priority to a value that increases (increases) by one as the high priority. This is because when the setting is made in this way, the priority that is not used does not occur and the number of the priorities to be used is reduced. The priority control unit 121 stores the assigned priority in the priority assignment target task area of the priority holding unit 123. Based on this operation, the priority control unit 121 maintains the task execution order.
  • the priority control unit 121 does not increase the priority to be given to the priority assignment target task (step S305). For example, if the priority value given to a task with high priority is small and the priority value given to a task with low priority is large, the priority control unit 121 precedes the task to be given priority. Give the task priority the same or higher value. Note that the priority control unit 121 desirably sets the value of the lowest priority as the priority. However, the priority control unit 121 may assign a priority lower than the current priority other than the lowest priority as necessary, and may make the priorities equal. The priority control unit 121 stores the assigned priority in the priority assignment target area of the priority holding unit 123. Based on this operation, the priority control unit 121 reduces the number of necessary priorities.
  • the priority control unit 121 determines whether or not the prioritization has been completed for all the tasks of the scheduling target core (step S306).
  • step S306 the priority control unit 121 ends the priority assignment process.
  • step S306 the priority control unit 121 returns to step S302 and sets the next task (previous task) of the static task scheduling result as a priority assignment target task. The above processing is repeated.
  • the priority of a task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, a task having a small numerical value is executed. If the priority of a task with a small numerical value is low, the numerical value may be switched. The lowest priority is “5”. (In other words, the maximum priority value is “5”.) 15 to 20 are diagrams for explaining the priority set by the priority control unit 121. The numerical value in the figure is the priority set for the task.
  • the priority control unit 121 defines (assigns) the priority of the task F that is the final task of the static task scheduling result. (This means that the priority control unit 121 sets the task F as a priority assignment target task.) The task F is a final task. Therefore, the priority control unit 121 defines “5” which is the lowest priority (maximum value as a numerical value) for the task F (FIG. 15).
  • the priority control unit 121 sets a task E to be executed before the task F as a priority assignment target task. Then, the priority control unit 121 determines whether the execution order of the task E may be changed. More specifically, the priority control unit 121 determines whether or not there is a possibility that the task E is executed after the scheduled time.
  • task E and task F depend on task D. Therefore, task F may be replaced with task E based on the priority and executed at the previous execution position. That is, the worst execution order of task E is after task F. This is different from the execution order of the static task scheduling result. Therefore, the priority control unit 121 determines that there is a possibility that the execution order of the task E may change. Note that task F is a subsequent execution task of task E.
  • the priority control unit 121 raises the priority of the task E over the subsequent task F (subsequent execution task). In this case, the priority of task F is “5”. Therefore, the priority control unit 121 sets the priority of the task E to “4” (FIG. 16).
  • the priority control unit 121 sets the task D executed before the task E as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task D.
  • Task D has a dependency relationship with subsequent tasks E and F. Therefore, the task E and the task F are not executed before the task D regardless of the priority. That is, the worst execution order of task D is the same as the execution order of the static task scheduling result. Therefore, the priority control unit 121 determines that there is no possibility of the task D execution order fluctuation.
  • the priority control unit 121 does not perform the process of increasing the priority of the task D, and gives the lowest priority (the lowest priority “5”) to the task D (FIG. 17). .
  • the priority control unit 121 sets task C executed before task D as a priority assignment task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task C.
  • the priority control unit 121 excludes the task E and the task F subordinate to the task D from the examination targets.
  • the reasons for exclusion are as follows. This is because if the priority control unit 121 sets the priority so that the task C is executed before the task D, the task E and the task F are not executed before the task C.
  • the dependency relationship between task C and task D is the same as that of task A. Therefore, the task D may be executed before the task C based on the priority. That is, the worst execution order of task C is after task D (immediately before task E). The worst execution order is different from the execution order of the static task scheduling result. For this reason, the priority control unit 121 determines that there is a possibility that the execution order of the task C may change.
  • the priority control unit 121 performs a process of raising the priority of task C over the subsequent execution task. More specifically, the priority control unit 121 raises the priority of all subsequent execution tasks of task C. In this case, the target subsequent execution task is task D. Therefore, the priority control unit 121 sets the priority of the task C to a priority “4” higher than the priority “5” of the task D (FIG. 18).
  • the priority control unit 121 sets task B executed before task C as a priority assignment task. Then, the priority control unit 121 determines the possibility of task B execution order fluctuation.
  • the priority control unit 121 excludes the task E and the task F from the order variation consideration targets.
  • Both task C and task D have dependencies from task A and no other dependencies. That is, task C and task D have no dependency with task B. Therefore, task C and task D may be replaced with task B based on the priority and executed before. That is, the worst execution order of task B is after task D (immediately before task E deleted from the examination target). The worst execution order is different from the execution order of the static task scheduling result. Therefore, the priority control unit 121 determines that there is a possibility of task B execution order fluctuation.
  • the priority control unit 121 raises the priority of task B higher than the priorities of all subsequent execution tasks of task B.
  • the target subsequent execution tasks are task C and task D. Therefore, the priority control unit 121 sets the priority of the task B to a priority “3” higher than the priority “4” of the task C (FIG. 19).
  • the priority control unit 121 sets task A executed before task B as a priority assignment task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task A. First, the priority control unit 121 excludes task E and task F from the examination targets. Further, since task C and task D have a dependency relationship with task A, task C and task D are not executed before task A. Furthermore, the task B is not executed before the task A based on the dependency relationship with the core 1. That is, no task is executed before task A. That is, the worst execution order of task A is the same as the execution order of the static task scheduling result.
  • the priority control unit 121 determines that there is no possibility of task A execution fluctuation. As a result, the priority control unit 121 gives the lowest priority “5” to the task A (FIG. 20).
  • the task scheduling apparatus 10 of the third embodiment configured as described above can obtain the effect of generating many tasks with low priority in addition to the effect of the first embodiment.
  • the task scheduling apparatus 10 of the third embodiment defines (assigns) the priority from the final task executed at the end of the static task scheduling result that sets the priority to a low level. .
  • the task scheduling apparatus 10 of the present embodiment is particularly effective when it is desired to secure the priority value in the high priority area as much as possible.
  • a task in which a change in execution order affects the outside is referred to as a “order fluctuation prohibited task”.
  • the order variation prohibition task for example, a task that performs I / O access or a task that has a communication dependency with a task on another core is conceivable.
  • a task whose fluctuation in the execution order does not affect the outside for example, a task limited to arithmetic processing in the core or a task whose dependency is limited to tasks in the same core can be considered.
  • the task scheduling apparatus 10 of the fourth embodiment uses the same priority for a task group in which the change in the execution order does not affect the outside as long as the execution order of the order change prohibition task does not change. Based on such assignment of priorities, the task scheduling apparatus 10 of the present embodiment further reduces the number of necessary priorities compared to the first to third embodiments.
  • the task scheduling apparatus 10 includes a method (first method) for defining (giving) priority from the first task of the static task scheduling result, and a method (second method) for defining (giving) the last task. Both) can be used.
  • first method for defining (giving) priority from the first task of the static task scheduling result
  • second method for defining (giving) the last task. Both
  • the task scheduling apparatus 10 of the present embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
  • FIG. 21 is a flowchart showing an example of the operation of the priority generation unit 12 of the present embodiment.
  • the priority generation part 12 implements the process demonstrated below about each core.
  • the highest priority may be set in advance as in the second embodiment.
  • the priority control unit 121 sets the highest priority used in task scheduling (step S401).
  • the priority control unit 121 may use any value as the highest priority. Further, as described above, the priority control unit 121 may set the highest priority in advance. Alternatively, the priority control unit 121 may remove the priority required for processing more important than the task set by task scheduling, and set the highest priority among the remaining available priorities as the highest priority. . Note that when the priority is set from the final task of the static task scheduling result, the priority control unit 121 sets the lowest priority.
  • the priority control unit 121 selects a priority assignment target task. Then, the priority control unit 121 sets (holds) the selected priority assignment target task in the priority assignment target task holding unit 122 (step S402).
  • the priority control unit 121 checks the possibility of change in the execution order of the priority assignment target tasks (step S403). More specifically, the priority control unit 121 operates as follows.
  • the priority control unit 121 obtains the best execution order of the priority assignment target tasks. Then, the priority control unit 121 compares the obtained best execution order with the execution order of the static task scheduling result. When the order is different, the priority control unit 121 determines that the execution order may change. When the execution order is equal, the priority control unit 121 determines that the execution order cannot change.
  • the priority control unit 121 reduces the number of necessary priorities using a process that does not lower the priority (step S407). Specifically, the priority control unit 121 performs the following operation.
  • the priority control unit 121 selects a priority equal to or higher than the priority of the preceding task as a numerical value of the priority, and stores the priority in the priority assignment target task area of the priority holding unit 123.
  • the priority control unit 121 desirably sets the highest priority value. However, the priority control unit 121 may increase the priority to a priority higher than the priority of the preceding task other than the highest priority, if necessary, or make the priority equal to the priority of the preceding task. After setting the priority, the priority control unit 121 proceeds to step S408.
  • the priority control unit 121 determines whether there is an external influence based on the change in the execution order of the priority assignment target tasks (step S404). ).
  • the priority control unit 121 determines the external influence based on the change of the execution order.
  • the order change prohibition task may be included in the preceding execution task of the priority assignment target task.
  • the execution order of the order variation prohibition task may be changed based on the execution order of the priority assignment target tasks.
  • the external influence may occur based on the execution order of the priority assignment target tasks that are not the order variation prohibition tasks. Therefore, when a part of the pre-execution task is an order change prohibition task, the priority control unit 121 assigns a priority to the process when there is no influence on the outside as long as the order change prohibition task is not affected. Apply to the target task.
  • the priority control unit 121 assigns a priority lower than all the prior execution tasks of the priority assignment target task to the priority assignment target task (Step S405). ).
  • the priority control unit 121 assigns a large value to the numerical value of the priority of the priority assignment target task. Then, the priority control unit 121 stores the selected priority in the priority assignment target task area of the priority holding unit 123. Note that the priority control unit 121 desirably selects a value that decreases the priority by one. Thereafter, the priority control unit 121 proceeds to step S408.
  • the priority control unit 121 assigns a priority that satisfies the following condition to the priority assignment target task.
  • Condition 1 Prior to the execution start time in the execution order of the static task scheduling results of all priority assignment tasks after the execution start time when the priority assignment target tasks are executed in the best execution order The priority is lower than the priority of all the order change prohibition tasks (hereinafter referred to as the "previous execution order change prohibition task") that are executed.
  • Condition 2 Execute after the execution start time in the execution order of the static task scheduling result of the priority assignment target task after the execution start time when the priority assignment target task is executed in the best execution order
  • the same priority as a task that is not an order change prohibition task hereinafter referred to as a “previous execution order change enable task”.
  • the priority control unit 121 assigns “4” as the priority, for example. Then, the priority control unit 121 stores the selected priority in the priority assignment target task area of the priority holding unit 123. It is desirable that the priority control unit 121 selects the highest priority as the same priority as that of the pre-execution order changeable task of the condition 2. Thereafter, the priority control unit 121 proceeds to step S408.
  • the priority control unit 121 determines whether or not prioritization has been completed for all tasks of the target core (step S408).
  • the priority control unit 121 ends the process.
  • step S408 If there is a task that has not been prioritized (No in step S408), the priority control unit 121 returns to step S402, sets the next task as a priority assignment target task, and repeats the processing described so far.
  • FIG. 22 is a diagram showing an example of a static task scheduling result used for explanation.
  • FIG. 22 shows two cores, core 0 and core 1. It is assumed that the priority control unit 121 gives priority to the task of the core 0. On the core 0, eight tasks from task G to task N are arranged as shown in FIG. In FIG. 22, the display of the task of the core 1 is omitted. Further, in FIG. 22, the dependency relationship between the tasks is indicated by a dashed arrow. This dependency relationship is a relationship that allows the task at the end of the arrow to be executed after the task at the base of the arrow is completed.
  • Task G is the top task.
  • Task H is a task that can be executed after task G ends.
  • Task I is an executable task after task G ends.
  • Task J is an executable task after task G ends.
  • Task K is an executable task after task H ends.
  • Task L is a task that can be executed after task I ends.
  • Task M is an executable task after task J is completed.
  • the task N is a final task and is an executable task after the tasks L and M are finished.
  • Task J, task K, and task N are assumed to be order variation prohibited tasks. Therefore, task J, task K, and task N are attached with an arrow whose dependency is the core 1.
  • Tasks other than task J, task K, and task N are not order variation prohibited tasks, and are allowed to change the execution order within a range that does not affect the order variation prohibited tasks.
  • the priority of a task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, a task having a low priority value is executed. If the priority of a task with a small numerical value is low, the numerical value may be switched. The highest priority is “1”. (In other words, the minimum priority value is “1”.) As a reference for the description of the present embodiment, priorities to which the task scheduling apparatus 10 of the second embodiment gives the static task scheduling result shown in FIG. 22 are shown.
  • FIG. 23 is a diagram illustrating priorities assigned by the task scheduling apparatus 10 according to the second embodiment.
  • the task scheduling apparatus 10 according to the second embodiment uses six priorities of “1” to “6”, which are smaller than eight, as the priorities.
  • 24 to 30 are diagrams for explaining the priority set by the priority control unit 121 of the present embodiment.
  • the numerical value in the figure is the priority defined (set or assigned) to the task.
  • the priority control unit 121 sets a task G to be executed first in the core 0 as a priority assignment target task.
  • the priority control unit 121 defines the priority of the task G.
  • the priority control unit 121 sets “1” as the highest priority (minimum priority value) as the priority of the task G.
  • the priority control unit 121 sets the priority assignment target task as a task H to be executed next to the task G. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task H). Specifically, the priority control unit 121 determines whether or not the task H is likely to be executed before the time of the execution order of the static task scheduling result.
  • the task H is not executed before the execution position (execution order) of the static task scheduling result based on the dependency relationship with the task G. That is, the best execution order of task H is immediately after task G, which is the same as the execution order of the static task scheduling results shown in FIG. For this reason, the priority control unit 121 determines that the task H has no possibility of changing the execution order.
  • the priority control unit 121 gives priority to the task H.
  • the task H is not likely to be executed before the time of the execution order of the static task scheduling result regardless of the priority. For this reason, the priority control unit 121 does not perform a process of lowering the priority of the task H from the preceding task (task G), and sets the same priority as the task G (in this case, “1”) (FIG. 24). .
  • the priority control unit 121 sets the priority assignment target task as the task I to be executed next to the task H. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task I). Specifically, the priority control unit 121 determines whether or not the task I is likely to be executed before the time of the execution order of the static task scheduling result.
  • Task I has a dependency relationship with task G, but has no dependency relationship with preceding task H. Therefore, task I may be replaced with task H based on the priority and executed before the execution order of the static task scheduling result. That is, the best execution order of task I is immediately after task G, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task I may change the execution order.
  • the priority control unit 121 gives priority to the task I.
  • the priority control unit 121 determines that the task I may change in execution order. However, task I is not an order change prohibition task. That is, the priority control unit 121 is allowed to change the task I execution order within a range that does not affect the outside.
  • the variable range of the task I execution order is after the best execution order. Again, the best execution order of task I is immediately after task G. Therefore, the task that can be changed in order corresponding to the task I is the task H. Therefore, the priority control unit 121 does not perform a process of lowering the priority of the task I from the task H. In other words, the priority control unit 121 sets, as the priority of the task I, the same priority (in this case, “1”) as the priority of the task I that can be executed in an orderly variable order (task H in this case). Define (FIG. 25).
  • the priority control unit 121 sets the priority assignment target task as the task J to be executed next to the task I. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task J). Specifically, the priority control unit 121 determines whether or not the task J is likely to be executed before the time of the execution order of the static task scheduling result.
  • Task J has a dependency relationship from task G, but has no dependency relationship with other preceding tasks. Therefore, task J may be replaced with task H and task I based on the priority, and executed before the execution order of the static task scheduling result. That is, the best execution order of task J is immediately after task G, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task J may change the execution order.
  • the priority control unit 121 gives priority to the task J.
  • the priority control unit 121 determines that the task J may be changed in execution order.
  • Task J is an order variation prohibition task. Accordingly, the priority control unit 121 performs a process for lowering the priority of the task J.
  • the best execution order of task J is immediately after task G. Therefore, the priority control unit 121 sets the priority of the task J as a priority lower than the lowest priority (in this case, “1”) among all prior execution tasks (task H, task I). (For example, “2”) is defined (FIG. 26).
  • the priority control unit 121 sets the priority assignment target task as the task K to be executed next to the task J. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task K). Specifically, the priority control unit 121 determines whether or not the task K is likely to be executed before the time of the execution order of the static task scheduling result.
  • Task K has a dependency relationship with task H, but does not have a dependency relationship with task I or task J. For this reason, the task K may be replaced with the task I and the task J based on the priority, and may be executed before the execution order of the static task scheduling result. That is, the best execution order of task K is immediately after task H, unlike the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the task K may change the execution order.
  • the priority control unit 121 gives priority to the task K.
  • the priority control unit 121 determines that the task K may change the execution order.
  • Task K is an order variation prohibition task. Accordingly, the priority control unit 121 performs a process for lowering the priority of the task K.
  • the best execution order of task K is immediately after task H. Therefore, the priority control unit 121 sets the priority of the task K that is lower than the lowest priority (in this case, “2”) among the priorities of all preceding execution tasks (task I and task J). (For example, “3”) is defined (FIG. 27).
  • the priority control unit 121 sets the priority assignment target task as the task L to be executed next to the task K. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task L). Specifically, the priority control unit 121 determines whether or not the task L is likely to be executed before the time of the execution order of the static task scheduling result.
  • Task L has a dependency relationship with task I, but has no dependency relationship with task J and task K. Therefore, the task L may be replaced with the task J and the task K based on the priority, and may be executed before the execution order of the static task scheduling result. That is, the best execution order of task L is immediately after task I, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task L may change the execution order.
  • the priority control unit 121 gives priority to the task L.
  • the priority control unit 121 determines that the execution order of the task L may be changed.
  • the task L is not an order variation prohibition task. That is, the priority control unit 121 is allowed to change the execution order of the task L within a range that does not affect the outside.
  • the priority control unit 121 sets the priority of the task L as a priority lower than the lowest priority (in this case, “3”) among all prior execution tasks (task J, task K). (For example, “4”) is defined (FIG. 28).
  • the priority control unit 121 sets the priority assignment target task as the task M to be executed next to the task L. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task M). Specifically, the priority control unit 121 determines whether or not there is a possibility of execution before the execution order time of the static task scheduling result of the task M.
  • Task M has a dependency relationship with task J, but does not have a dependency relationship with task K and task L. Therefore, the task M may be replaced with the task K and the task L based on the priority, and may be executed before the execution order of the static task scheduling result. That is, the best execution order of task M is immediately after task J, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task M may change the execution order.
  • the priority control unit 121 gives priority to the task M.
  • the priority control unit 121 determines that the execution order of the task M may be changed.
  • the task M is not an order variation prohibition task. That is, the priority control unit 121 is allowed to change the execution order of the task M within a range that does not affect the outside.
  • task K is an order variation prohibited task. That is, task M cannot be replaced with task K. Therefore, the priority control unit 121 uses the priority of the task M, which is lower than the priority of the preceding execution order change prohibition task (task K), as the priority of the task M.
  • a priority (“4”) equivalent to the degree (“4” in this case) is defined (FIG. 29).
  • the priority control unit 121 sets the priority assignment target task as the task N to be executed next to the task M. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task N). Specifically, the priority control unit 121 determines whether or not there is a possibility of execution before the time of the execution order of the static task scheduling result of the task N.
  • Task N has a dependency relationship with task L and task M.
  • Task L and task M are not order variation prohibition tasks. That is, there is a possibility that the execution order of the task L and the task M is switched.
  • task N has a dependency relationship with both task L and task M. Therefore, regardless of the execution order of task L and task M, task N is executed after the execution of the two tasks. That is, the best execution order of task N is the same as the execution order of the static task scheduling result (immediately after task M). Therefore, the priority control unit 121 determines that the task N is not likely to change the execution order.
  • the priority control unit 121 gives priority to the task N.
  • the priority control unit 121 determines that the task N has no possibility of changing the execution order. Therefore, the priority control unit 121 defines the highest priority (in this case, “1”) among the priorities that can be set as the priority of the task N without performing a process lower than the preceding task ( FIG. 30).
  • the task scheduling apparatus 10 of the present embodiment uses the second implementation as the priority. Four less than six of the forms are used.
  • the task scheduling apparatus 10 can obtain an effect of reducing the number of priorities to be used from the task scheduling apparatus 10 according to the first to third embodiments.
  • the task scheduling apparatus 10 uses the same priority for a task whose task execution order does not affect the outside.
  • FIG. 31 is a block diagram showing an example of the configuration of the task scheduling apparatus 10A according to the present embodiment.
  • the same components as those in FIG. 2 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the task scheduling apparatus 10A includes an apparatus control unit 13 in addition to the static task scheduling generation unit 11 and the priority generation unit 12 included in the task scheduling apparatus 10 illustrated in FIG.
  • the device control unit 13 controls the operations of the static task scheduling generation unit 11 and the priority generation unit 12. More specifically, the device control unit 13 causes the static task scheduling generation unit 11 to execute a static task scheduling of a task. Then, the device control unit 13 causes the priority generation unit 12 to assign a priority to the task subjected to the static task scheduling. The device control unit 13 repeats this operation until all tasks are completed.
  • the device control unit 13 closely links the static task scheduling generation unit 11 and the priority generation unit 12 to facilitate detection of the best execution order.
  • the task scheduling apparatus 10A of this embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
  • FIG. 32 is a flowchart showing an example of the operation of the task scheduling apparatus 10A of the present embodiment.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for a task to be processed.
  • the static task scheduling generation unit 11 executes static task scheduling for determining the core arrangement of the designated task and the execution order of the tasks on the core (step S501). Note that as the method used for the static task scheduling, the method of the embodiment described above may be used. In addition, since the task for which static task scheduling has been performed is processed next by the priority generation unit 12, it becomes a priority assignment target task.
  • the device control unit 13 instructs the priority generation unit 12 to give priority to the task for which static task scheduling has been completed.
  • the priority generation unit 12 gives priority to the priority assignment target task for which static task scheduling has been completed (step S502).
  • the method used by the priority generation unit 12 for assigning priority may be the method of the embodiment described above.
  • the task scheduling apparatus 10A determines whether the prioritized tasks are statically scheduled in the best execution order (or worst execution order). Can be easily determined.
  • the device control unit 13 determines whether or not all tasks have been processed (step S503).
  • step S503 If there is a task that has not been processed (No in step S503), the apparatus control unit 13 returns to step S501 and repeats the process for the next task.
  • step S503 the apparatus control unit 13 ends the process.
  • the task scheduling apparatus 10A may process static task scheduling and priority generation by integrating a plurality of cores.
  • the description is complicated. Therefore, in the following, the operation of the core 0 will be described for clarity of explanation.
  • the priority of the task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, it is assumed that a task with a small numerical value given as a priority is executed with priority. When the priority of a task with a small numerical value is low, the determination of the numerical value may be switched.
  • priorities are set in the order in which tasks are executed, and the highest priority (minimum value of priority values) is “3”.
  • 33 to 38 are diagrams for explaining the priorities set by the task scheduling apparatus 10A of the present embodiment.
  • the numerical value in the figure is the priority defined (set, assigned) to the task.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling of the first task.
  • the static task scheduling generation unit 11 determines that the execution of the task A first on the core 0 is good for performance improvement. Therefore, the static task scheduling generation unit 11 performs static task scheduling for task A.
  • the priority assignment target task is task A.
  • tasks that can be executed after task A during the static task scheduling become clear.
  • the tasks that can be executed are the task B from which the dependency from the core 1 is eliminated, and the task C and the task D from which the dependency from the task A is eliminated. That is, the task scheduling apparatus 10A can know that the best execution order of task B, task C, and task D is immediately after task A.
  • a task whose dependency is eliminated and placement is possible is referred to as a “placeable task”.
  • the device control unit 13 instructs the priority generation unit 12 to define the priority of the task A.
  • Task A is the top task. Therefore, the priority generation unit 12 sets (gives) “3”, which is the highest priority (minimum value of priority), as the priority of task A (FIG. 33).
  • the device control unit 13 processes the next task because there are still tasks remaining.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task.
  • the static task scheduling generation unit 11 determines that the next task B on the core 0 is good for performance improvement. Therefore, the static task scheduling generation unit 11 performs static task scheduling for task B.
  • the priority assignment target task is task B.
  • the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task B).
  • the priority generation unit 12 determines that the task B has no possibility of changing the execution order. Then, the priority generation unit 12 sets the priority of the task B to the highest priority (in this case, “3”) without performing a process of lowering the priority of the task B from the preceding task A (FIG. 34). In this case, since the priority of the preceding task A is the highest priority, the priority of the task B is the same as the priority of the task A.
  • the device control unit 13 processes the next task because there are still tasks remaining.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task.
  • the static task scheduling generation unit 11 determines that the next task C execution on the core 0 is good for performance improvement. Therefore, the static task scheduling generator 11 performs static task scheduling for task C.
  • the priority assignment target task is task C.
  • the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task C).
  • the priority generation unit 12 determines that the task C may change the execution order. Then, the priority generation unit 12 sets the priority of the task C to a priority (for example, “4”) lower than the priority (“3”) of the preceding execution task (task B) (FIG. 35).
  • the device control unit 13 processes the next task because there are still tasks remaining.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task.
  • the static task scheduling generation unit 11 determines that the next execution of the task D on the core 0 is good for performance improvement. (Note that the task remaining in the task that can be arranged at this time is task D (see FIG. 35).) Therefore, the static task scheduling generation unit 11 performs static task scheduling of task D.
  • the priority assignment target task is task D.
  • tasks that can be executed after task D become clear.
  • the tasks that can be arranged are the task E and the task F whose dependency on the task D is eliminated. That is, the task scheduling apparatus 10A can know that the best execution order of the task E and the task F is immediately after the task D.
  • the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task D).
  • the priority generation unit 12 determines that the task D may change the execution order. Then, the priority generation unit 12 sets the priority of the task D to a priority (for example, “5”) lower than the lowest priority (“4”) among the preceding execution tasks (task B and task C). (FIG. 36).
  • the device control unit 13 processes the next task because there are still tasks remaining.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task.
  • the static task scheduling generation unit 11 determines that the next task E on the core 0 is good for performance improvement. Therefore, the static task scheduling generator 11 performs static task scheduling for task E.
  • the priority assignment target task is task E.
  • the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task E).
  • the priority generation unit 12 determines that the task E has no possibility of changing the execution order. Then, the priority generation unit 12 sets the highest priority (in this case, “3”) that can be set without performing a process of lowering the priority of the task E over the preceding task D (FIG. 37).
  • the device control unit 13 processes the next task because there are still tasks remaining.
  • the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task.
  • the static task scheduling generation unit 11 determines that the next execution of the task F on the core 0 is good for performance improvement. (The remaining task that can be arranged is task F (see FIG. 37).) Therefore, the static task scheduling generation unit 11 performs static task scheduling of task F.
  • the priority assignment target task is task F.
  • the best execution order of task F is immediately after task D.
  • Task F may replace task E based on priority. That is, the best execution order of task F is different from the execution order of the static task scheduling result. For this reason, the priority generation unit 12 determines that the task F may be changed in execution order. Then, the priority generation unit 12 sets the priority of the task F as a priority (for example, “4”) lower than the lowest priority (“3”) in the preceding execution task (task E) (FIG. 38). ).
  • a priority for example, “4”
  • the task scheduling device 10A can easily detect the best execution order. It was.
  • the method for detecting the best execution order by the task scheduling apparatus 10A of the present embodiment is not limited to this.
  • the static task scheduling generation unit 11 may assign a code indicating whether or not the static task scheduling is performed in the best execution order.
  • the task scheduling apparatus 10A of the present embodiment separates the operations of the static task scheduling generation unit 11 and the priority generation unit 12 and has the same configuration as described with reference to FIG. An effect can be obtained.
  • the task scheduling apparatus 10A of the fifth embodiment is not limited to the configuration described above, and various modifications are possible.
  • the task scheduling apparatus 10A of the present embodiment can obtain the effect of facilitating detection of the best execution order.
  • the task scheduling apparatus 10A of the present embodiment includes the apparatus control unit 13 and realizes cooperation between the static task scheduling generation unit 11 and the priority generation unit 12.
  • the task scheduling apparatus 10A sets a code at a place where the execution order can change.
  • the present invention can be used for a software development tool that reduces the number of priorities necessary for maintaining the execution order while maintaining the execution order based on static task scheduling.

Abstract

In order to maintain an execution sequence that is based on static task scheduling while reducing the number of priority levels required to maintain the execution sequence, a generated static task scheduling result is compared with the optimal execution sequence when viewed from the prior task in the static task scheduling result, and with the least optimal execution sequence when viewed from the rearmost task, and when the execution sequence has not changed, the priority level of the task is set to the same level as or to a higher level than the lowest priority level of the tasks subsequent to the execution start time, when the sequence is executed with the priority level of the tasks in the optimal execution sequence, or is set to the same level as or to a lower level than the highest priority level of the successively following tasks before the execution end time, when the sequence is executed in the least optimal execution sequence.

Description

スケジューリング装置、及び、スケジューリング方法Scheduling apparatus and scheduling method
 本発明は、複数のコアをスケジューリングする装置及び方法に関し、特に、コアの処理のスケジューリングに関する。 The present invention relates to an apparatus and method for scheduling a plurality of cores, and more particularly to scheduling of core processes.
 デジタル機器に対する高性能化又は低消費電量化は、常に、要求されてきた。近年、これらの要求を受け、組み込み等に用いられるLSI(Large Scale Integration)に複数の「プロセッサ・コア(以下、単に「コア」と言う)」を搭載するマルチコア構成が、注目を集めている。LSIのマルチコア化は、例えば、システム制御を目的とするリアルタイムシステムにおいて、重要な技術と、なっている。 High performance or low power consumption for digital equipment has always been required. In recent years, in response to these demands, a multi-core configuration in which a plurality of “processor cores (hereinafter simply referred to as“ cores ”)” is mounted on an LSI (Large Scale Integration) used for integration or the like has attracted attention. Multi-core LSI is an important technology in, for example, a real-time system for system control.
 マルチコアを搭載したシステム又は装置は、対照型マルチプロセッシング(SMP:Symmetric Multi Processing)方式と、非対称型マルチプロセッシング(AMP:Asymmetric Multiple Processing)方式とに、大別される。 A system or apparatus equipped with a multi-core is roughly classified into a contrast type multiprocessing (SMP) system and an asymmetric multiprocessing (AMP) system.
 SMP方式は、コアの空き状況及び実行中のタスクの優先度等に応じて、タスクを実行するコアを切り替える。この切り替えに基づき、SMP方式は、各タスクを、いずれのコア上でも実行できる。つまり、SMP方式は、コアの動的な負荷分散が可能である。動的な負荷分散が可能なため、SMP方式は、システム全体の性能を、向上できる。しかし、動的な負荷分散は、リアルタイム性能の予測を、困難とする。従って、SMP方式は、リアルタイムシステムへの適用には適していない。 The SMP method switches the core that executes the task according to the availability of the core and the priority of the task being executed. Based on this switching, the SMP method can execute each task on any core. That is, the SMP method can dynamically distribute the core load. Since dynamic load distribution is possible, the SMP method can improve the performance of the entire system. However, dynamic load balancing makes it difficult to predict real-time performance. Therefore, the SMP method is not suitable for application to a real-time system.
 一方、AMP方式は、各タスクが、特定のコア上で実行される機能分散型である。そのため、AMP方式は、システムの挙動が予測できることが重要なリアルタイムシステム、及び、特定のハードウェアが接続されているコアが限定されるシステム等に、好適である。 On the other hand, the AMP method is a function distributed type in which each task is executed on a specific core. Therefore, the AMP method is suitable for a real-time system in which it is important to be able to predict system behavior, a system in which a core to which specific hardware is connected is limited, and the like.
 このようなAMP方式のマルチコアシステムにおいて、システムの性能は、タスクのコアへの配置に応じて変化する。このため、AMP方式のマルチコアシステムでは、最適な実行状態となるタスク配置を探索し、タスクの最適な配置を決定することが、必要である。 In such an AMP multi-core system, the system performance varies depending on the task allocation to the core. For this reason, in an AMP multi-core system, it is necessary to search for a task layout that is in an optimal execution state and determine an optimal task layout.
 AMP方式のマルチコアシステムを活用する手法の一例として、自動並列化コンパイラを用いる方法がある。 An example of a technique for utilizing an AMP multi-core system is a method using an automatic parallelizing compiler.
 自動並列化コンパイラとして、静的タスクスケジューリング手法が、研究されている。静的タスクスケジューリング手法として、例えば、次のような処理を用いた手法がある。まず、この手法は、プログラムをタスクに分割する。そして、この手法は、タスクと、タスク間の依存関係とを、グラフ表現したタスクグラフを、作成する。そして、この手法は、作成したタスクグラフを用いて、マルチコアに対して、静的に、タスクを配置する。そして、この手法は、各コア上でのタスクの実行順序を、静的に、スケジューリングする。 A static task scheduling method has been studied as an automatic parallelizing compiler. As a static task scheduling technique, for example, there is a technique using the following processing. First, this method divides a program into tasks. In this method, a task graph in which the tasks and the dependency relationships between the tasks are expressed in a graph is created. In this method, tasks are statically arranged with respect to the multicore using the created task graph. In this method, the task execution order on each core is statically scheduled.
 また、静的タスクスケジューリング手法として、例えば、リストスケジューリングを用いた手法が、ある。(例えば、特許文献1及び非特許文献1を参照)。 Also, as a static task scheduling method, for example, there is a method using list scheduling. (For example, see Patent Document 1 and Non-Patent Document 1).
 リストスケジューリングの手法は、特に、各コア上でのタスクのスケジューリングを動的に変更しないシステムにおいて、良好な性能を、得ることができる。 The list scheduling method can obtain good performance, particularly in a system that does not dynamically change the task scheduling on each core.
特開2003-029988JP2003-029988
 特許文献1及び非特許文献1に記載の静的タスクスケジューリング手法は、各コア上でのタスクの実行順序が確定できることを、前提とする。 The static task scheduling methods described in Patent Document 1 and Non-Patent Document 1 are based on the premise that the execution order of tasks on each core can be determined.
 一方、AMP方式のマルチコアの利用として、RTOS(Real-Time Operating System)を搭載し、RTOS上でタスクを実行するモデルが、ある。このモデルは、実装の容易さのため、広く用いられている。 On the other hand, there is a model that uses RTOS (Real-Time Operating System) and executes tasks on RTOS as an AMP multi-core. This model is widely used for ease of implementation.
 このモデルでは、RTOSが、タスクの実行時に、マルチコアの各コア上でのスケジューリングを、動的に決定する。そのため、このようなシステムにおいて、同一優先度の複数タスクが同時に実行可能となった場合、実際に実行されるタスクは、RTOSのスケジューリングの状態に基づき、決定される。つまり、タスクの実行順序は、不確定である。 In this model, the RTOS dynamically determines the scheduling on each of the multi-core cores when the task is executed. Therefore, in such a system, when a plurality of tasks having the same priority can be executed simultaneously, the task to be actually executed is determined based on the scheduling state of the RTOS. That is, the task execution order is indeterminate.
 特許文献1及び非特許文献1に記載の自動並列化コンパイラの手法は、RTOS上でタスクを実行するモデルにおいて、実行順序が不確定のため、マルチコアに基づく効果が得られないという問題点があった。 The method of the automatic parallelizing compiler described in Patent Document 1 and Non-Patent Document 1 has a problem that the effect based on multicore cannot be obtained because the execution order is uncertain in a model that executes tasks on RTOS. It was.
 この対策として、例えば、実行順序を守るようタスク間での通信を追加するようにプログラムを修正する方法がある。しかし、プログラムを修正する場合、プログラムの再検証が、必要である。そのため、プログラムを修正する方法は、一般的に、好まれない。 As a countermeasure, for example, there is a method of modifying the program so as to add communication between tasks so as to keep the execution order. However, when the program is modified, it is necessary to re-verify the program. For this reason, the method of modifying the program is generally not preferred.
 そこで、プログラムを修正しない方法として、各タスクへの優先度付けを用いる方法が、用いられている。コアで実行するn個のタスクがある場合、優先度付けを用いる方法は、n個の優先度、つまり、実行するタスクの数の優先度を用いて、優先度が高い順に、タスクに優先度を付ける。このように、優先度付けを用いる方法は、プログラムを変更せずに、タスクの実行順序を守ることができる。 Therefore, as a method for not modifying the program, a method using prioritization for each task is used. When there are n tasks to be executed in the core, the method of using prioritization uses n priorities, that is, the priority of the number of tasks to be executed, and prioritizes the tasks in descending order of priority. Add. Thus, the method using prioritization can keep the task execution order without changing the program.
 しかし、タスク数が非常に多い場合、全てのタスクに優先度を割り付けることは、現実的でない。タスクが多いシステムは、多数存在する。そのため、タスクが多いシステムへの対策が、問題点となっていた。 However, if the number of tasks is very large, assigning priority to all tasks is not practical. There are many systems with many tasks. Therefore, countermeasures for systems with many tasks have become a problem.
 本発明の目的は、上述の問題点を解決し、静的タスクスケジューリングに基づく実行順序を守った上で、必要な優先度の個数を削減するスケジューリング装置、及び、スケジューリング方法を提供することにある。 An object of the present invention is to provide a scheduling apparatus and a scheduling method for solving the above-described problems and reducing the number of necessary priorities while keeping the execution order based on static task scheduling. .
 本発明のタスクスケジューリング装置は、タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する静的タスクスケジューリング生成手段と、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、又は、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する、優先度生成手段とを含む。 The task scheduling apparatus of the present invention is a statically determined task scheduling including a core layout indicating which of a plurality of cores a task is to be allocated and an execution order of the tasks on the core. Static task scheduling generation means for generating task scheduling results, and the execution order of the static task scheduling results are examined in the order in which the tasks are executed. When the best execution order, which is the order in which execution can be started earliest when it is assumed to be executed prior to the task, is compared with the execution order of the static task scheduling results, the execution order is different. Static task schedule of the priority assignment task after the execution start time when executed in the best execution order A priority lower than all the tasks that are executed in advance by the execution start time in the execution order of the ring result is given to the priority assignment target task, and if the execution order does not change, the execution is executed in the best execution order. The priority given to the task to be given priority is equal to or higher than the lowest priority of all the tasks prior to the task to be given priority after the execution start time, or the static task scheduling result When the task execution order is viewed from behind the task execution order, it is assumed that other tasks are executed in preference to the priority assignment task that is the task to which priority is given. The worst execution order, which is the order that can be started, is compared with the execution order of the static task scheduling result. If the execution order is different, the worst execution order The priority is given higher priority than all tasks executed after the execution end time in the execution order of the static task scheduling result of the priority assignment target task before the execution end time when executed in Giving to the target task, if the execution order does not change, priority equal to or lower than the highest priority of all tasks following the priority assignment task before the execution end time when executed in the worst execution order Priority generation means for assigning a degree to the priority assignment target task.
 本発明のタスクスケジューリング方法は、複数のコアを含むマルチコアの装置において、タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成し、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、又は、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する。 The task scheduling method of the present invention includes, in a multi-core apparatus including a plurality of cores, a core arrangement indicating which of a plurality of cores a task is to be allocated to, and an execution order of the tasks on the core A task to which a priority is to be given is a task that gives a priority by generating a static task scheduling result in which task scheduling is statically determined, looking at the execution order of the static task scheduling result in the order in which the tasks are executed Is compared to the execution order of the static task scheduling result, and the execution order is the order in which the execution of the static task scheduling result can be started earliest. If they are different, the static task schedule of the prioritized task after the execution start time when executed in the best execution order. If the priority assignment task is given a lower priority than all the tasks that are executed prior to the execution start time in the execution order of the result, the execution is executed in the best execution order. The priority given to the task to be given priority is equal to or higher than the lowest priority of all the tasks prior to the task to be given priority after the execution start time, or the static task scheduling result When the task execution order is viewed from behind the task execution order, it is assumed that other tasks are executed in preference to the priority assignment task that is the task to which priority is given. The worst execution order, which is the order that can be started, is compared with the execution order of the static task scheduling results. The priority is higher than all the tasks that are executed after the execution end time in the execution order of the static task schedule result of the priority assignment target task before the execution end time when executed in order When assigned to a task to be granted and the execution order does not change, it is equal to or lower than the highest priority of all tasks following the priority assignment task before the execution end time when executed in the worst execution order A priority is assigned to the priority assignment target task.
 本発明のプログラムは、複数のコアを含むマルチコアの装置において、タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する処理と、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する処理、又は、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する処理とを、コンピュータに実行させる。 The program of the present invention is a multi-core device including a plurality of cores, a task scheduling including a core arrangement indicating which of a plurality of cores a task is to be allocated, and an execution order of the tasks on the core A process for generating a static task scheduling result that is statically determined, and a task to be given a priority, which is a task for giving a priority by looking at the execution order of the static task scheduling result in the order in which the tasks are executed Is compared to the execution order of the static task scheduling result, and the execution order is the order in which the execution of the static task scheduling result can be started earliest. If they are different, the static task schedule of the priority assignment task after the execution start time when executed in the best execution order. If the priority assignment task is given a lower priority than all tasks executed prior to the execution start time in the execution order of the execution results, and if the execution order does not change, it is executed in the best execution order. Processing for giving a priority equal to or higher than the lowest priority of all tasks preceding the priority assignment task after the execution start time in the case of the execution of the priority assignment target task, or the static task scheduling Look at the execution order of the results from the order in which the tasks are executed, and execute the latest when assuming that other tasks are executed in preference to the priority assignment task that is the task to which priority is given Is compared with the execution order of the static task scheduling result, and when the execution order is different, the worst execution order The priority is given higher priority than all tasks executed after the execution end time in the execution order of the static task schedule result of the priority assignment target task before the execution end time when executed in Giving to the target task, if the execution order does not change, priority equal to or lower than the highest priority of all tasks following the priority assignment task before the execution end time when executed in the worst execution order And causing the computer to execute a process of assigning a degree to the priority assignment task.
 本発明によれば、静的タスクスケジューリングに基づく実行順序を維持した上で、実行順序の維持に必要な優先度の個数を削減することが可能となる。 According to the present invention, it is possible to reduce the number of priorities necessary for maintaining the execution order while maintaining the execution order based on the static task scheduling.
図1は、本発明における第1の実施形態に係るマルチコアシステムの構成の一例を示すブロック図である。FIG. 1 is a block diagram showing an example of the configuration of the multi-core system according to the first embodiment of the present invention. 図2は、第1の実施形態に係るタスクスケジューリング装置の構成の一例を示すブロック図である。FIG. 2 is a block diagram illustrating an example of the configuration of the task scheduling apparatus according to the first embodiment. 図3は、第1の実施形態のタスクスケジューリング装置の動作の一例を示すフローチャートである。FIG. 3 is a flowchart illustrating an example of the operation of the task scheduling apparatus according to the first embodiment. 図4は、第1の実施形態のタスクスケジューリング装置の構成の一例を示すブロック図である。FIG. 4 is a block diagram illustrating an example of the configuration of the task scheduling apparatus according to the first embodiment. 図5は、第2の実施形態に係る優先度生成部の構成の一例を示すブロック図である。FIG. 5 is a block diagram illustrating an example of a configuration of a priority generation unit according to the second embodiment. 図6は、第2の実施形態の優先度生成部の動作の一例を示すフローチャートである。FIG. 6 is a flowchart illustrating an example of the operation of the priority generation unit according to the second embodiment. 図7は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。FIG. 7 is a diagram illustrating an example of a static task scheduling result used for explanation. 図8は、第2の実施形態に係る動作を説明するための図である。FIG. 8 is a diagram for explaining the operation according to the second embodiment. 図9は、第2の実施形態に係る動作を説明するための図である。FIG. 9 is a diagram for explaining an operation according to the second embodiment. 図10は、第2の実施形態に係る動作を説明するための図である。FIG. 10 is a diagram for explaining an operation according to the second embodiment. 図11は、第2の実施形態に係る動作を説明するための図である。FIG. 11 is a diagram for explaining an operation according to the second embodiment. 図12は、第2の実施形態に係る動作を説明するための図である。FIG. 12 is a diagram for explaining an operation according to the second embodiment. 図13は、第2の実施形態に係る動作を説明するための図である。FIG. 13 is a diagram for explaining an operation according to the second embodiment. 図14は、第3の実施形態の優先度生成部の動作の一例を示すフローチャートである。FIG. 14 is a flowchart illustrating an example of the operation of the priority generation unit according to the third embodiment. 図15は、第3の実施形態に係る動作を説明するための図である。FIG. 15 is a diagram for explaining the operation according to the third embodiment. 図16は、第3の実施形態に係る動作を説明するための図である。FIG. 16 is a diagram for explaining an operation according to the third embodiment. 図17は、第3の実施形態に係る動作を説明するための図である。FIG. 17 is a diagram for explaining an operation according to the third embodiment. 図18は、第3の実施形態に係る動作を説明するための図である。FIG. 18 is a diagram for explaining an operation according to the third embodiment. 図19は、第3の実施形態に係る動作を説明するための図である。FIG. 19 is a diagram for explaining an operation according to the third embodiment. 図20は、第3の実施形態に係る動作を説明するための図である。FIG. 20 is a diagram for explaining an operation according to the third embodiment. 図21は、第4の実施形態の優先度生成部の動作の一例を示すフローチャートである。FIG. 21 is a flowchart illustrating an example of the operation of the priority generation unit according to the fourth embodiment. 図22は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。FIG. 22 is a diagram illustrating an example of a static task scheduling result used for explanation. 図23は、説明で参照する第2の実施形態の結果を示す図である。FIG. 23 is a diagram illustrating a result of the second embodiment referred to in the description. 図24は、第4の実施形態に係る動作を説明するための図である。FIG. 24 is a diagram for explaining the operation according to the fourth embodiment. 図25は、第4の実施形態に係る動作を説明するための図である。FIG. 25 is a diagram for explaining an operation according to the fourth embodiment. 図26は、第4の実施形態に係る動作を説明するための図である。FIG. 26 is a diagram for explaining an operation according to the fourth embodiment. 図27は、第4の実施形態に係る動作を説明するための図である。FIG. 27 is a diagram for explaining the operation according to the fourth embodiment. 図28は、第4の実施形態に係る動作を説明するための図である。FIG. 28 is a diagram for explaining an operation according to the fourth embodiment. 図29は、第4の実施形態に係る動作を説明するための図である。FIG. 29 is a diagram for explaining an operation according to the fourth embodiment. 図30は、第4の実施形態に係る動作を説明するための図である。FIG. 30 is a diagram for explaining an operation according to the fourth embodiment. 図31は、第5の実施形態に係るタスクスケジューリング装置の構成の一例を示すブロック図である。FIG. 31 is a block diagram illustrating an example of a configuration of a task scheduling apparatus according to the fifth embodiment. 図32は、第5の実施形態に係るタスクスケジューリング装置の動作の一例を示すフローチャートである。FIG. 32 is a flowchart illustrating an example of the operation of the task scheduling apparatus according to the fifth embodiment. 図33は、第5の実施形態に係る動作を説明するための図である。FIG. 33 is a diagram for explaining the operation according to the fifth embodiment. 図34は、第5の実施形態に係る動作を説明するための図である。FIG. 34 is a diagram for explaining an operation according to the fifth embodiment. 図35は、第5の実施形態に係る動作を説明するための図である。FIG. 35 is a diagram for explaining an operation according to the fifth embodiment. 図36は、第5の実施形態に係る動作を説明するための図である。FIG. 36 is a diagram for explaining the operation according to the fifth embodiment. 図37は、第5の実施形態に係る動作を説明するための図である。FIG. 37 is a diagram for explaining the operation according to the fifth embodiment. 図38は、第5の実施形態に係る動作を説明するための図である。FIG. 38 is a diagram for explaining the operation according to the fifth embodiment.
 次に、本発明の実施形態について、図面を参照して、説明する。 Next, an embodiment of the present invention will be described with reference to the drawings.
 なお、各図面は、本発明の実施形態を説明するためのものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。 Each drawing is for explaining an embodiment of the present invention. Therefore, the present invention is not limited to the description of each drawing. Moreover, the same number is attached | subjected to the same structure of each drawing, and the repeated description may be abbreviate | omitted.
 また、本発明において、コアで実行する処理単位は、特に制限はない。例えば、処理単位は、タスク、又は、スレッドでも良い。また、処理単位は、タスク又はスレッドをまとめたアプリケーションプログラムでも良い。以下では、これら処理単位をまとめ、「タスク」として、説明する。そのため、以下の実施形態の説明では、本発明のスケジューリング装置を、タスクスケジューリング装置として説明する。 In the present invention, the processing unit executed by the core is not particularly limited. For example, the processing unit may be a task or a thread. The processing unit may be an application program in which tasks or threads are collected. In the following, these processing units will be collectively described as “tasks”. Therefore, in the following description of the embodiment, the scheduling device of the present invention will be described as a task scheduling device.
 (第1の実施形態)
 まず、本発明における第1の実施形態について説明する。
(First embodiment)
First, a first embodiment of the present invention will be described.
 図1は、本発明のおける第1の実施形態に係るマルチコアシステム1の構成の一例を示すブロック図である。 FIG. 1 is a block diagram showing an example of the configuration of a multi-core system 1 according to the first embodiment of the present invention.
 マルチコアシステム1は、タスクスケジューリング装置10と、コア部20と、タスクメモリ30とを含む。 The multi-core system 1 includes a task scheduling device 10, a core unit 20, and a task memory 30.
 コア部20は、複数のコアを含む。コアは、タスクスケジューリング装置10が生成するスケジューリングに基づいて、タスクが割り当てられ、割り当てられたタスクを実行する。 The core unit 20 includes a plurality of cores. Based on the scheduling generated by the task scheduling device 10, the core is assigned a task and executes the assigned task.
 タスクスケジューリング装置10は、後ほど詳細に説明するように、タスクをスケジューリングし、所定のコアでタスクを実行させる。 Task scheduling device 10 schedules a task and causes a predetermined core to execute the task, as will be described in detail later.
 タスクメモリ30は、コアで実行されるタスクを、記憶する。 Task memory 30 stores tasks executed by the core.
 ここで、マルチコアシステム1は、全ての構成を組み込んだ組み込みLSIでも良い。あるいは、マルチコアシステム1は、1つ又は複数の機能を含む複数のLSIを信号線で接続したLSIシステムでも良い。あるいは、マルチコアシステム1は、1つ又は複数の機能を含む複数の装置を、バス又は通信線で接続したシステムでも良い。 Here, the multi-core system 1 may be an embedded LSI in which all configurations are incorporated. Alternatively, the multi-core system 1 may be an LSI system in which a plurality of LSIs including one or more functions are connected by signal lines. Alternatively, the multi-core system 1 may be a system in which a plurality of devices including one or more functions are connected by a bus or a communication line.
 なお、図1に示すタスクスケジューリング装置10は、マルチコアシステム1に含まれるとした。しかし、本実施形態のタスクスケジューリング装置10は、これに限らない。例えば、タスクスケジューリング装置10は、マルチコアシステム1に含まれなくても良い。つまり、マルチコアシステム1は、タスクスケジューリング装置10を含まない構成でも良い。その構成の場合、例えば、本実施形態のタスクスケジューリング装置10は、予め、タスクスケジューリングを作成する。そして、タスクスケジューリング装置10は、作成したタスクスケジューリングを図示しない記憶装置に保存する。マルチコアシステム1は、タスクの実行時に、図示しない記憶装置から作成済みのタスクスケジューリングを取り出し、用いればよい。 Note that the task scheduling apparatus 10 shown in FIG. 1 is included in the multi-core system 1. However, the task scheduling apparatus 10 of this embodiment is not limited to this. For example, the task scheduling apparatus 10 may not be included in the multicore system 1. That is, the multi-core system 1 may be configured not to include the task scheduling device 10. In the case of such a configuration, for example, the task scheduling apparatus 10 of the present embodiment creates task scheduling in advance. Then, the task scheduling apparatus 10 stores the created task scheduling in a storage device (not shown). The multi-core system 1 may extract and use the created task scheduling from a storage device (not shown) when executing the task.
 次に、タスクスケジューリング装置10について、図面を参照して、より詳細に説明する。 Next, the task scheduling apparatus 10 will be described in more detail with reference to the drawings.
 図2は、タスクスケジューリング装置10の構成の一例を示すブロック図である。 FIG. 2 is a block diagram showing an example of the configuration of the task scheduling apparatus 10.
 タスクスケジューリング装置10は、静的タスクスケジューリング生成部11と、優先度生成部12とを含む。なお、図2は、本発明に関連する機能を示し、タスクに関するマルチコアの選択機能など他の機能については、省略した。 The task scheduling apparatus 10 includes a static task scheduling generation unit 11 and a priority generation unit 12. FIG. 2 shows functions related to the present invention, and other functions such as a multi-core selection function related to a task are omitted.
 静的タスクスケジューリング生成部11は、タスクをどのコアに配置するかを表すコア配置と、タスクの各コア上での実行順序とを静的に決定(生成)する。つまり、静的タスクスケジューリング生成部11は、静的なタスクのスケジューリングを生成する。 The static task scheduling generation unit 11 statically determines (generates) the core arrangement indicating which core the task is to be allocated to and the execution order of the task on each core. That is, the static task scheduling generation unit 11 generates a static task scheduling.
 優先度生成部12は、静的タスクスケジューリング生成部11で決定された各コア上での実行順序に従って、各タスクが実行されるように、タスクに優先度を付ける(付与する/生成する)。ただし、本実施形態の優先度生成部12は、全てのタスクに異なる優先度を付けるのではなく、使用する優先度の個数を削減するように、タスクに優先度を付ける。この優先付けについては、後ほど説明する。 The priority generation unit 12 gives a priority to (assigns / generates) a task so that each task is executed according to the execution order on each core determined by the static task scheduling generation unit 11. However, the priority generation unit 12 of this embodiment does not give different priorities to all tasks, but gives priorities to tasks so as to reduce the number of priorities to be used. This prioritization will be described later.
 次に、タスクスケジューリング装置10の動作について説明する。 Next, the operation of the task scheduling apparatus 10 will be described.
 図3は、タスクスケジューリング装置10の動作の一例を示すフローチャートである。 FIG. 3 is a flowchart showing an example of the operation of the task scheduling apparatus 10.
 まず、タスクスケジューリング装置10の静的タスクスケジューリング生成部11は、静的タスクスケジューリングを生成(決定)する(ステップS100)。 First, the static task scheduling generation unit 11 of the task scheduling apparatus 10 generates (determines) static task scheduling (step S100).
 より具体的には、静的タスクスケジューリング生成部11は、静的タスクスケジューリングとして、次に示す項目を静的に決定(生成)する。(以下、静的タスクスケジューリングの結果を「静的タスクスケジューリング結果」と言うこともある。)
 (1)タスクを、どのコアに、配置するかを、表すコア配置
 (2)各コア上での、タスクの実行順序
 なお、本実施形態の静的タスクスケジューリング生成部11は、静的タスクスケジューリングに用いる手法に、特に制限はない。例えば、静的タスクスケジューリング生成部11は、既に説明した特許文献1又は非特許文献1に記載した技術を、用いても良い。
More specifically, the static task scheduling generation unit 11 statically determines (generates) the following items as static task scheduling. (Hereinafter, the result of static task scheduling may be referred to as “static task scheduling result”.)
(1) Core arrangement indicating to which core a task is to be arranged (2) Task execution order on each core Note that the static task scheduling generation unit 11 of this embodiment uses static task scheduling. There is no particular limitation on the method used for the above. For example, the static task scheduling generation unit 11 may use the technology described in Patent Document 1 or Non-Patent Document 1 already described.
 次に、タスクスケジューリング装置10の優先度生成部12は、静的タスクスケジューリング生成部11が決定した実行順序(上記(2)項)でタスクが実行されるように、タスクに優先度を付ける(優先度を生成する)(ステップS101)。ただし、本実施形態の優先度生成部12は、タスクに設定する優先度の個数を削減するように、優先度を付ける。 Next, the priority generation unit 12 of the task scheduling apparatus 10 assigns priorities to the tasks so that the tasks are executed in the execution order determined by the static task scheduling generation unit 11 (above (2)) ( Priority is generated) (step S101). However, the priority generation unit 12 of the present embodiment assigns priorities so as to reduce the number of priorities set for tasks.
 本実施形態の優先度生成部12の優先度付けについて、さらに説明する。 The prioritization of the priority generation unit 12 of this embodiment will be further described.
 <第1の手法>
 まず、優先度生成部12が、静的タスクスケジューリング生成部11が決定した静的タスクスケジューリング結果を、タスクが実行される順に、見ていく(優先度を付ける)場合の手法について、説明する。
<First method>
First, a method in which the priority generation unit 12 looks at the static task scheduling results determined by the static task scheduling generation unit 11 in the order in which tasks are executed (priority is given) will be described.
 この手法では、優先度生成部12は、最初に実行されるタスク(以下、「先頭タスク」と言う)に、最も高い優先度(最高優先度)を、付与する。そして、優先度生成部12は、静的タスクスケジューリング結果の後ろのタスクに行く(進む)に従って、タスクに付与する優先度を下げる。このような優先度の付与を用いて、優先度生成部12は、タスクの実行順序を維持する。 In this method, the priority generation unit 12 assigns the highest priority (highest priority) to the task to be executed first (hereinafter referred to as “first task”). Then, the priority generation unit 12 lowers the priority given to the task as it goes to (follows) the task behind the static task scheduling result. Using such priority assignment, the priority generation unit 12 maintains the task execution order.
 ただし、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、後ろのタスクに付与する優先度を、下げない。より具体的に説明すると、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、後ろのタスクに付与する優先度を、前のタスクの優先度と同等又は高くする。 However, the priority generation unit 12 does not lower the priority to be assigned to the subsequent task in a portion where the execution order does not change regardless of the priority to be given. More specifically, the priority generation unit 12 determines the priority to be given to the subsequent task as the priority of the previous task for a portion where the execution order does not change regardless of the priority to be given. Equal or higher.
 ここで、優先度生成部12は、可能な限り高い優先度(最も望ましくは、先頭タスクの優先度と同等の最高優先度)を付与することが望ましい。これは、次の示す理由に基づく。高い優先度をタスクに設定すると、優先度生成部12は、そのタスクに続くタスクに設定する優先度を、高い優先度に続く優先度から付与できる。そのため、優先度生成部12は、タスクの付与するために必要となる優先度の個数を、削減できる。 Here, it is desirable that the priority generation unit 12 assigns the highest possible priority (most preferably, the highest priority equivalent to the priority of the head task). This is based on the following reason. When a high priority is set for a task, the priority generation unit 12 can assign the priority set for the task following the task from the priority following the high priority. Therefore, the priority generation unit 12 can reduce the number of priorities necessary for assigning tasks.
 この優先度生成部12の動作をより詳細に説明する。 The operation of the priority generation unit 12 will be described in detail.
 優先度生成部12は、優先度付与対象のタスクが他のタスクより優先して実行されると仮定した場合に、最も早く実行の開始が可能となる順序である「最良実行順序」を求める。 The priority generation unit 12 obtains the “best execution order” that is the order in which execution can be started earliest when it is assumed that the task to be given priority is executed with priority over other tasks.
 そして、優先度生成部12は、先頭タスクから各タスクの最良実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。比較の結果として実行順序が異なる場合、そのタスクは、実行順序の変動が起こりえるタスクである。一方、比較の結果として実行順序が同じ場合、そのタスクは、実行順序の変動が起こりえないタスクである。 Then, the priority generation unit 12 compares the best execution order of each task from the top task with the execution order of the static task scheduling result. If the execution order is different as a result of the comparison, the task is a task whose execution order may change. On the other hand, if the execution order is the same as a result of the comparison, the task is a task that cannot change the execution order.
 そこで、タスクの最良実行順序と静的タスクスケジューリング結果の実行順序とが異なる場合、優先度生成部12は、次のように動作する。まず、優先度生成部12は、そのタスクが最良実行順序で実行された場合の実行開始時刻以降で、そのタスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行するタスク(以下、「先行実行タスク」と言う)の全ての優先度を調べる。そして、優先度生成部12は、全ての先行実行タスクの優先度より低い優先度を、そのタスクに、付与する。まとめると、優先度生成部12は、そのタスクの全ての先行実行タスクの優先度より低い優先度を、そのタスクに付与する。 Therefore, when the best execution order of tasks and the execution order of the static task scheduling result are different, the priority generation unit 12 operates as follows. First, the priority generation unit 12 executes after the execution start time when the task is executed in the best execution order and before the execution start time in the execution order of the static task scheduling result of the task. All priorities of tasks (hereinafter referred to as “previous execution tasks”) are examined. Then, the priority generation unit 12 gives a priority lower than the priorities of all the preceding execution tasks to the task. In summary, the priority generation unit 12 gives the task a priority lower than the priorities of all preceding execution tasks of the task.
 つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、高くする。この優先度の付与に基づき、優先度生成部12は、タスクの実行順序を、維持する。 That is, the priority generation unit 12 makes the priority of the preceding task relatively higher than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 maintains the task execution order.
 一方、タスクの最良実行順序と静的タスクスケジューリング結果の実行順序とが変化しない場合、優先度生成部12は、そのタスクに先行する全てのタスクの最低の優先度と同等又は高い優先度(既に説明のとおり最高優先度が望ましい)を、そのタスクに付与する。つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、同等又は低くする。この優先度の付与に基づき、優先度生成部12は、必要な優先度の個数を、削減する。 On the other hand, when the best execution order of tasks and the execution order of the static task scheduling result do not change, the priority generation unit 12 has a priority (already equal to or lower than the lowest priority of all tasks preceding the task). The highest priority is preferred) as given. That is, the priority generation unit 12 makes the priority of the preceding task relatively equal or lower than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 reduces the number of necessary priorities.
 <第2の手法>
 次に、優先度生成部12が、静的タスクスケジューリング生成部11が決定した静的タスクスケジューリング結果を、タスクが実行される順序の後ろから、見ていく(優先度を付ける)場合の手法について、説明する。
<Second method>
Next, a method in which the priority generation unit 12 looks at the static task scheduling result determined by the static task scheduling generation unit 11 from the order in which tasks are executed (priority is given). ,explain.
 この手法では、優先度生成部12は、最後に実行されるタスク(以下、「最終タスク」と言う)に、最も低い優先度(最低優先度)を、付与する。そして、優先度生成部12は、静的タスクスケジューリング結果の前のタスクに行く(戻る)に従って、タスクに付与する優先度を上げる。このような優先度の付与を用いて、優先度生成部12は、タスクの実行順序を維持する。 In this method, the priority generation unit 12 gives the lowest priority (lowest priority) to the task that is executed last (hereinafter referred to as “final task”). And the priority generation part 12 raises the priority provided to a task according to going to the task before the static task scheduling result (returning). Using such priority assignment, the priority generation unit 12 maintains the task execution order.
 ただし、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、前のタスクに付与する優先度を、上げない。より具体的に説明すると、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、前のタスクに付与する優先度を後ろのタスクの優先度と同等又は低くする。 However, the priority generation unit 12 does not increase the priority to be assigned to the previous task in a portion where the execution order does not change regardless of the priority to be given. More specifically, the priority generation unit 12 equals the priority given to the previous task to the priority of the subsequent task in a portion where the execution order does not change regardless of the priority given. Or lower.
 ここで、優先度生成部12は、可能な限り低い優先度(最も望ましくは、最終タスクの優先度と同等の最低優先度)を付与することが望ましい。これは、次に示す理由に基づく。低い優先度をタスクに設定すると、優先度生成部12は、そのタスクの前のタスクに設定する優先度を、低い優先度に続く優先度から付与できる。そのため、優先度生成部12は、タスクに付与するために必要となる優先度の個数を、削減できる。 Here, it is desirable that the priority generation unit 12 assigns the lowest possible priority (most preferably, the lowest priority equivalent to the priority of the final task). This is based on the following reason. When a low priority is set for a task, the priority generation unit 12 can assign the priority set for the task preceding the task from the priority following the low priority. Therefore, the priority generation unit 12 can reduce the number of priorities necessary for giving to tasks.
 この優先度生成部12の動作をより詳細に説明する。 The operation of the priority generation unit 12 will be described in detail.
 優先度生成部12は、優先度付与対象のタスクより他のタスクが優先して実行されると仮定した場合に、最も遅く実行の開始が可能となる順序である「最悪実行順序」を求める。 The priority generation unit 12 obtains the “worst execution order” that is the order in which execution can be started at the latest when it is assumed that other tasks are executed with priority over the task to be given priority.
 そして、優先度生成部12は、最終タスクから各タスクの最悪実行順序と静的タスクスケジューリング結果の実行順序とを比較する。比較の結果として順序が異なる場合、そのタスクは、実行順序の変動が起こりえるタスクである。一方、比較の結果として順序が同じ場合、そのタスクは、実行順序の変動が起こりえないタスクである。 Then, the priority generation unit 12 compares the worst execution order of each task with the execution order of the static task scheduling result from the last task. If the order is different as a result of the comparison, the task is a task whose execution order may change. On the other hand, when the order is the same as a result of the comparison, the task is a task that cannot change the execution order.
 そこで、タスクの最悪実行順序と静的タスクスケジューリング結果の実行順序とが異なる場合、優先度生成部12は、次のように動作する。まず、優先度生成部12は、そのタスクが最悪実行順序で実行された場合の実行終了時刻以前で、そのタスクの静的タスクスケジューリング結果の実行順序での実行終了時刻に後続して実行するタスク(以下、「後続実行タスク」と言う)の全ての優先度を調べる。そして、優先度生成部12は、全ての後続実行タスクの優先度よりも高い優先度を、そのタスクに、付与する。まとめると、優先度生成部12は、そのタスクの全ての後続実行タスクの優先度より高い優先度を、そのタスクに、付与する。 Therefore, when the worst execution order of tasks and the execution order of static task scheduling results are different, the priority generation unit 12 operates as follows. First, the priority generation unit 12 executes a task that is executed before the execution end time when the task is executed in the worst execution order and subsequent to the execution end time in the execution order of the static task scheduling result of the task. All the priorities (hereinafter referred to as “subsequent execution tasks”) are checked. Then, the priority generation unit 12 gives a priority higher than the priority of all subsequent execution tasks to the task. In summary, the priority generation unit 12 gives a priority higher than the priority of all subsequent execution tasks of the task.
 つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、高くする。この優先度の付与に基づき、優先度生成部12は、タスクに実行順序を、維持する。 That is, the priority generation unit 12 makes the priority of the preceding task relatively higher than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 maintains the execution order of tasks.
 一方、タスクの最悪実行順序と静的タスクスケジューリング結果の実行順序とが変化しない場合、優先度生成部12は、そのタスクに後続する全てのタスクの優先度と同等又は低い優先度(既に説明のとおり最低優先度が望ましい)を、そのタスクに付与する。つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、同等又は低くする。この優先度の付与に基づき、優先度生成部12は、必要な優先度の個数を、削減する。 On the other hand, when the worst execution order of the tasks and the execution order of the static task scheduling result do not change, the priority generation unit 12 has a priority equal to or lower than the priority of all the tasks subsequent to the task (described above). Is given to the task). That is, the priority generation unit 12 makes the priority of the preceding task relatively equal or lower than the priority of the subsequent task. Based on this priority assignment, the priority generation unit 12 reduces the number of necessary priorities.
 なお、最悪実行順序を求める際、優先度生成部12は、望ましくは、後続するタスクに更に従属するタスクを、検討対象から除外した上で、最悪実行順序を求める。 Note that when determining the worst execution order, the priority generation unit 12 preferably calculates the worst execution order after excluding tasks that are further subordinate to the subsequent task from the examination target.
 また、優先度生成部12は、最良実行順序又は最悪実行順序として、例えば、タスクの実行順序の数値を用いても良い。ただし、本実施形態の優先度生成部12が用いる実行順序は、タスクの実行順序に限らない。優先度生成部12が用いる実行順序は、タスクの実行開始時刻又は実行終了時刻など、優先度生成部12においてタスクの順序関係が判断できれば、表現形式を限定されない。例えば、あるタスクの実行中に別の高い優先度が付与されてタスクが起動した場合、起動したタスクに実行が遷移する。このような場合、優先度生成部121は、単純にタスクの並びとして順序を表現できない。このような場合、優先度生成部12は、実行順序として、時刻を用いた表現を用いても良い。 Also, the priority generation unit 12 may use, for example, a numerical value of the task execution order as the best execution order or the worst execution order. However, the execution order used by the priority generation unit 12 of the present embodiment is not limited to the task execution order. The execution order used by the priority generation unit 12 is not limited in the expression form as long as the order generation task 12 can determine the task order relationship such as the task execution start time or the execution end time. For example, when a task is activated while another high priority is given during execution of a certain task, the execution transitions to the activated task. In such a case, the priority generation unit 121 cannot simply represent the order as a sequence of tasks. In such a case, the priority generation unit 12 may use an expression using time as the execution order.
 なお、本実施形態のタスクスケジューリング装置10の構成は、図2に示す構成に限らない。各構成は、さらに複数の構成に分けられても良い。あるいは、タスクスケジューリング装置10は、図2に示す構成を、1つの構成に含めても良い。 Note that the configuration of the task scheduling apparatus 10 of the present embodiment is not limited to the configuration shown in FIG. Each configuration may be further divided into a plurality of configurations. Alternatively, the task scheduling apparatus 10 may include the configuration illustrated in FIG. 2 in one configuration.
 また、本実施形態のタスクスケジューリング装置10は、ハードウェア構成も特に制限はない。例えば、タスクスケジューリング装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータとして実現しても良い。 Further, the hardware configuration of the task scheduling apparatus 10 of the present embodiment is not particularly limited. For example, the task scheduling apparatus 10 may be realized as a computer including a CPU (Central Processing Unit), a ROM (Read Only Memory), and a RAM (Random Access Memory).
 図4は、本実施形態のタスクスケジューリング装置10と同様に動作するタスクスケジューリング装置60のハードウェアの構成の一例を示す図である。 FIG. 4 is a diagram illustrating an example of a hardware configuration of the task scheduling apparatus 60 that operates in the same manner as the task scheduling apparatus 10 of the present embodiment.
 タスクスケジューリング装置60は、CPU610と、ROM620と、RAM630と、記憶装置640と、IO(Input/Output)650と、入力機器660と、表示機器670とを含み、コンピュータを構成している。 The task scheduling device 60 includes a CPU 610, a ROM 620, a RAM 630, a storage device 640, an IO (Input / Output) 650, an input device 660, and a display device 670, and constitutes a computer.
 CPU610は、ROM620又は記憶装置640からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、図2に示すタスクスケジューリング装置10の静的タスクスケジューリング生成部11と、優先度生成部12としての、各機能を実現する。CPU610は、各機能を実現する際に、RAM630及び記憶装置640を一時記憶として使用する。また、CPU610は、IO650を介して、入力機器660から入力データを受信し、表示機器670にデータを表示する。 The CPU 610 reads a program from the ROM 620 or the storage device 640. The CPU 610 realizes each function as the static task scheduling generation unit 11 and the priority generation unit 12 of the task scheduling apparatus 10 illustrated in FIG. 2 based on the read program. The CPU 610 uses the RAM 630 and the storage device 640 as temporary storage when realizing each function. In addition, the CPU 610 receives input data from the input device 660 via the IO 650 and displays the data on the display device 670.
 なお、CPU610は、コンピュータで読み取り可能なプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて、読み込んでも良い。あるいは、CPU610は、図示しないネットワークを介して、外部の装置から、プログラムを受け取っても良い。 Note that the CPU 610 may read a program included in the storage medium 700 storing a computer-readable program using a storage medium reading device (not shown). Alternatively, the CPU 610 may receive a program from an external device via a network (not shown).
 ROM620は、CPU610が実行するプログラム、及び、固定的なデータを記憶する。ROM620は、例えば、P-ROM(Programmable-ROM)又はフラッシュROMである。 ROM 620 stores programs executed by CPU 610 and fixed data. The ROM 620 is, for example, a P-ROM (Programmable-ROM) or a flash ROM.
 RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D-RAM(Dynamic-RAM)である。 The RAM 630 temporarily stores programs executed by the CPU 610 and data. The RAM 630 is, for example, a D-RAM (Dynamic-RAM).
 記憶装置640は、タスクスケジューリング装置60で長期的に保存するデータ及びプログラムを保存する。また、記憶装置640は、CPU610の一時記憶装置として動作しても良い。記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)、又は、ディスクアレイ装置である。 The storage device 640 stores data and programs stored in the task scheduling device 60 for a long time. In addition, the storage device 640 may operate as a temporary storage device for the CPU 610. The storage device 640 is, for example, a hard disk device, a magneto-optical disk device, an SSD (Solid State Drive), or a disk array device.
 IO650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IO650は、例えば、IOインターフェースカードである。 The IO 650 mediates data between the CPU 610, the input device 660, and the display device 670. The IO 650 is, for example, an IO interface card.
 入力機器660は、タスクスケジューリング装置60の操作者からの入力指示を受信する入力部である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。 The input device 660 is an input unit that receives an input instruction from an operator of the task scheduling device 60. The input device 660 is, for example, a keyboard, a mouse, or a touch panel.
 表示機器670は、タスクスケジューリング装置60の表示部である。表示機器670は、例えば、液晶ディスプレイである。 The display device 670 is a display unit of the task scheduling device 60. The display device 670 is a liquid crystal display, for example.
 なお、図4に示すタスクスケジューリング装置60は、タスクスケジューリング装置10としての機能に加え、図1に示すコア部20及びタスクメモリ30の機能を含み、マルチコアシステム1として動作しても良い。 4 may include the functions of the core unit 20 and the task memory 30 illustrated in FIG. 1 in addition to the functions as the task scheduling apparatus 10, and may operate as the multi-core system 1.
 この場合、CPU610は、図1に示すコア部20、つまり、複数のコアを含む。 In this case, the CPU 610 includes the core unit 20 shown in FIG. 1, that is, a plurality of cores.
 また、CPU610が図示しない内蔵メモリを含む場合、タスクスケジューリング装置60は、内蔵メモリを、タスクメモリ30として用いても良い。あるいは、タスクスケジューリング装置60は、RAM630又は記憶装置640を、タスクメモリ30として用いても良い。 Further, when the CPU 610 includes a built-in memory (not shown), the task scheduling device 60 may use the built-in memory as the task memory 30. Alternatively, the task scheduling device 60 may use the RAM 630 or the storage device 640 as the task memory 30.
 本実施形態のタスクスケジューリング装置10の効果について説明する。 The effect of the task scheduling apparatus 10 of this embodiment will be described.
 このように構成された本実施形態のタスクスケジューリング装置10は、静的タスクスケジューリング結果に基づく実行順序を維持した上で、実行順序の維持に必要な優先度の個数を削減する効果を得ることができる。 The task scheduling apparatus 10 of the present embodiment configured as described above can obtain an effect of reducing the number of priorities necessary for maintaining the execution order while maintaining the execution order based on the static task scheduling result. it can.
 その理由は、次のとおりである。 The reason is as follows.
 本実施形態のタスクスケジューリング装置10は、静的タスクスケジューリング結果を決定する。そして、タスクスケジューリング装置10は、各タスクについて、タスクの優先度に基づいて実行順序が変わりえる箇所(タスク)と、優先度に関わらず実行順序が変わりえない箇所(タスク)とに分類する。 The task scheduling apparatus 10 of this embodiment determines a static task scheduling result. Then, the task scheduling apparatus 10 classifies each task into a place (task) where the execution order can be changed based on the priority of the task and a place (task) where the execution order cannot be changed regardless of the priority.
 順序が変わりえる箇所の場合、タスクスケジューリング装置10は、先行するタスクの優先度を、後続するタスクの優先度と比較して相対的に高くするように、優先度と付与する。そのため、タスクスケジューリング装置10は、タスクの実行順序を、維持できる。 In the case where the order can be changed, the task scheduling apparatus 10 gives the priority so that the priority of the preceding task is relatively higher than the priority of the subsequent task. Therefore, the task scheduling apparatus 10 can maintain the task execution order.
 一方、順序が変わりえない箇所の場合、タスクスケジューリング装置10は、先行するタスクの優先度を、後続するタスクの優先度と比較して相対的に同等又は低くする。 On the other hand, in the case where the order cannot be changed, the task scheduling apparatus 10 makes the priority of the preceding task relatively equal to or lower than the priority of the subsequent task.
 より具体的に説明すると、次のとおりになる。静的タスクスケジューリング結果の先頭から優先度を設定する場合、タスクスケジューリング装置10は、先行する全てのタスクの最低の優先度と同等又は高い優先度を付与する。静的タスクスケジューリング結果の実行される順序の後ろから優先度を設定する場合、タスクスケジューリング装置10は、後続する全てのタスクの最高の優先度と同等又は低い優先度を付与する。そのため、タスクスケジューリング装置10は、必要な優先度の個数を、削減できる。 More specifically, it is as follows. When setting the priority from the top of the static task scheduling result, the task scheduling apparatus 10 assigns a priority equal to or higher than the lowest priority of all preceding tasks. When setting the priority from the order in which the static task scheduling results are executed, the task scheduling apparatus 10 assigns a priority equal to or lower than the highest priority of all subsequent tasks. Therefore, the task scheduling apparatus 10 can reduce the number of necessary priorities.
 (第2の実施形態)
 静的タスクスケジューリング結果の先頭タスクから優先度を定義(付与)していく手法(第1の手法)を用いるタスクスケジューリング装置10の、より詳細な実施形態について、第2の実施形態として、説明する。
(Second Embodiment)
A more detailed embodiment of the task scheduling apparatus 10 that uses a method (first method) in which priority is defined (given) from the first task of the static task scheduling result will be described as a second embodiment. .
 繰り返しの説明となるが、本実施形態のタスクスケジューリング装置10が用いる手法は、静的タスクスケジューリング結果に基づく実行順序の、先頭タスクから優先度を定義する方法であり、次のような動作を含む。 As a repetitive explanation, the method used by the task scheduling apparatus 10 of the present embodiment is a method of defining the priority from the top task in the execution order based on the static task scheduling result, and includes the following operations: .
 まず、タスクスケジューリング装置10は、各タスクの優先度に基づいて実行順序が変わりえる箇所と、優先度に基づいて実行順序が変わらない箇所とを、分類する。タスクスケジューリング装置10は、実行順序が変わりえる箇所について、先行するタスクの優先度に対し、後続のタスクの優先度を、低く定義する。この動作に基づき、タスクスケジューリング装置10は、タスクの実行順序を、維持する。 First, the task scheduling apparatus 10 classifies a place where the execution order can change based on the priority of each task and a place where the execution order does not change based on the priority. The task scheduling device 10 defines the priority of the subsequent task lower than the priority of the preceding task at a place where the execution order can be changed. Based on this operation, the task scheduling apparatus 10 maintains the task execution order.
 一方、タスクスケジューリング装置10は、実行順序が変わらない箇所について、先行するタスクの優先度に対して、後続のタスクの優先度を、下げない。この動作に基づき、タスクスケジューリング装置10は、必要な優先度の個数を、抑制する。 On the other hand, the task scheduling apparatus 10 does not lower the priority of the subsequent task with respect to the priority of the preceding task at a place where the execution order does not change. Based on this operation, the task scheduling apparatus 10 suppresses the number of necessary priorities.
 上記の動作を実現するため、本実施形態のタスクスケジューリング装置10の優先度生成部12は、図5に示す構成を含む。なお、本実施形態のタスクスケジューリング装置10の構成は、図5に示す優先度生成部12の構成を除き、第1の実施形態の同じ構成のため、同じ構成の説明を省略する。 In order to realize the above operation, the priority generation unit 12 of the task scheduling apparatus 10 of the present embodiment includes the configuration shown in FIG. The configuration of the task scheduling apparatus 10 of this embodiment is the same as that of the first embodiment except for the configuration of the priority generation unit 12 shown in FIG.
 図5は、本実施形態の優先度生成部12の構成の一例を示すブロック図である。 FIG. 5 is a block diagram showing an example of the configuration of the priority generation unit 12 of the present embodiment.
 優先度生成部12は、優先度制御部121と、優先度付与対象タスク保持部122と、優先度保持部123とを含む。 The priority generation unit 12 includes a priority control unit 121, a priority assignment target task holding unit 122, and a priority holding unit 123.
 優先度制御部121は、タスクの優先度の設定(付与)の処理を、制御する。 The priority control unit 121 controls the process of setting (giving) task priority.
 優先度付与対象タスク保持部122は、優先度付与対象タスクが、いずれのタスクであるかを示す情報を、保持する。 The priority assignment target task holding unit 122 holds information indicating which task the priority assignment target task is.
 優先度保持部123は、タスクに設定された優先度の値を、保持する。本実施形態の優先度保持部123は、少なくとも、優先度を設定するタスクの数の優先度の値を保持する領域を、備える。 The priority holding unit 123 holds the priority value set for the task. The priority holding unit 123 according to the present embodiment includes at least an area for holding a priority value of the number of tasks for which priority is set.
 なお、本実施形態のタスクスケジューリング装置10は、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで実現されても良い。 Note that the task scheduling apparatus 10 of the present embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
 次に、本実施形態の優先度生成部12の動作について、図面を参照して、説明する。 Next, the operation of the priority generation unit 12 of this embodiment will be described with reference to the drawings.
 図6は、本実施形態の優先度生成部12の動作の一例を示すフローチャートである。 FIG. 6 is a flowchart showing an example of the operation of the priority generation unit 12 of the present embodiment.
 優先度生成部12は、図6に示す処理を、スケジューリングの対象となる各コアに対し、実施する。なお、タスクスケジューリングに用いる最高優先度は、予め、タスクスケジューリング装置10に、設定されていてもよい。 The priority generation unit 12 performs the process shown in FIG. 6 for each core to be scheduled. Note that the highest priority used for task scheduling may be set in the task scheduling apparatus 10 in advance.
 まず、優先度制御部121は、タスクスケジューリングに用いる最高優先度を設定する(ステップS201)。優先度制御部121は、最高優先度として、任意の値を用いても良い。また、優先度制御部121は、既に説明したように、最高優先度が予め設定されていても良い。あるいは、優先度制御部121は、タスクスケジューリングで設定するタスクより重要な処理で必要とする優先度を取り除き、残った利用可能な優先度の中で最も高い優先度を、最高優先度としても良い。 First, the priority control unit 121 sets the highest priority used for task scheduling (step S201). The priority control unit 121 may use any value as the highest priority. Further, as described above, the priority control unit 121 may have the highest priority set in advance. Alternatively, the priority control unit 121 may remove the priority required for processing more important than the task set by task scheduling, and set the highest priority among the remaining available priorities as the highest priority. .
 次に、優先度制御部121は、静的タスクスケジューリング結果の中の先頭から、順に、タスクを選択する。以下、選択されたタスクは、「優先度付与対象タスク」と言う。優先度制御部121は、優先度付与対象タスクを、優先度付与対象タスク保持部122に、設定する(ステップS202)。 Next, the priority control unit 121 selects tasks in order from the top in the static task scheduling result. Hereinafter, the selected task is referred to as a “priority assignment target task”. The priority control unit 121 sets the priority assignment target task in the priority assignment target task holding unit 122 (step S202).
 続いて、優先度制御部121は、優先度付与対象タスクの実行順序の変動の可能性を、調べる(ステップS203)。 Subsequently, the priority control unit 121 checks the possibility of change in the execution order of the priority assignment target tasks (step S203).
 より具体的に説明すると、次のようになる。 More specifically, it is as follows.
 優先度制御部121は、優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合に、最も早く実行の開始が可能となる順序である最良実行順序を求める。そして、優先度制御部121は、最良実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。 The priority control unit 121 obtains the best execution order that is the order in which execution can be started earliest when it is assumed that the priority assignment target task is executed with priority over other tasks. Then, the priority control unit 121 compares the best execution order with the execution order of the static task scheduling result.
 実行順序が異なる場合、優先度制御部121は、実行順序の変動が起こり得ると判断する。一方、実行順序が等しい場合、優先度制御部121は、実行順序の変動が起こり得ないと判断する。 If the execution order is different, the priority control unit 121 determines that the execution order may change. On the other hand, when the execution order is equal, the priority control unit 121 determines that the execution order cannot change.
 実行順序の変動が起こり得る場合(ステップS203でYes)、優先度制御部121は、優先度付与対象タスクの全ての先行実行タスクの優先度より低い優先度を、優先度付与対象タスクに、付与する(ステップS204)。 When the execution order may change (Yes in step S203), the priority control unit 121 assigns a priority lower than the priorities of all the prior execution tasks of the priority assignment target task to the priority assignment target task. (Step S204).
 例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度の数値が大きい値を、優先度付与対象タスクに設定する。これは、優先度付与対象タスクの優先度を下げることになる。 For example, if the priority value given to a task with high priority is small and the priority value given to a task with low priority is large, the priority control unit 121 sets a value with a large numerical value of priority, Set in the task to be given priority. This lowers the priority of the priority assignment target task.
 なお、優先度制御部121は、低い優先度として、優先度が一つ下がる(低くなる)値にすることが望ましい。このように設定すると、使用されない優先度が発生せず、使用する優先度の個数が少なくなるためである。 It should be noted that the priority control unit 121 desirably has a value that lowers (lowers) the priority by one as the low priority. This is because when the setting is made in this way, the priority that is not used does not occur and the number of the priorities to be used is reduced.
 優先度制御部121は、付与した優先度を優先度保持部123の優先度付与対象タスクの領域に保存する。 The priority control unit 121 stores the assigned priority in the priority assignment target task area of the priority holding unit 123.
 この動作に基づき、優先度制御部121は、タスクの実行順序を維持する。 Based on this operation, the priority control unit 121 maintains the task execution order.
 一方、実行順序の変動が起こり得ない場合(ステップS203 No)、優先度制御部121は、優先度付与対象タスクに付与する優先度を下げない(ステップS205)。 On the other hand, when the execution order cannot be changed (No in Step S203), the priority control unit 121 does not lower the priority given to the priority assignment target task (Step S205).
 例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度付与対象タスクに、先行するタスクの優先度の数値として同等又は低い値を付ける。 For example, if the priority value given to a task with high priority is small and the priority value given to a task with low priority is large, the priority control unit 121 precedes the task to be given priority. Give the task priority the same or lower value.
 なお、優先度制御部121は、優先度として、最高優先度の値を設定することが望ましい。ただし、優先度制御部121は、必要に応じて最高優先度以外で現在の優先度より高い優先度を付与しても良く、優先度を同等としても良い。 Note that it is desirable that the priority control unit 121 sets the highest priority value as the priority. However, the priority control unit 121 may give a priority higher than the current priority other than the highest priority, if necessary, and may make the priorities equal.
 優先度制御部121は、付与した優先度を優先度保持部123のうち優先度付与対象タスクの領域に保存する。 The priority control unit 121 stores the assigned priority in the priority assignment target area of the priority holding unit 123.
 この動作に基づき、優先度制御部121は、必要な優先度の個数を、削減する。 Based on this operation, the priority control unit 121 reduces the number of necessary priorities.
 優先度付与対象タスクに優先度を設定すると、優先度制御部121は、スケジューリングの対象のコアの全てのタスクについて、優先度付けが終了したか否かを判定する(ステップS206)。 When the priority is set for the priority assignment target task, the priority control unit 121 determines whether or not the prioritization has been completed for all the tasks of the scheduling target core (step S206).
 終了した場合(ステップS206でYes)、優先度制御部121は、優先度の付与の処理を終了する。 When the processing is completed (Yes in step S206), the priority control unit 121 ends the priority assignment processing.
 終了していない場合(ステップS206でNo)、優先度制御部121は、ステップS202に戻り、静的タスクスケジューリング結果の次のタスク(1つ後のタスク)を優先度付与対象タスクに設定して、上記の処理を繰り返す。 If not completed (No in step S206), the priority control unit 121 returns to step S202 and sets the next task (next task) of the static task scheduling result as a priority assignment target task. The above processing is repeated.
 次に、図面を用いて、図6を参照して説明した処理について、さらに説明する。 Next, the process described with reference to FIG. 6 will be further described with reference to the drawings.
 図7は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。 FIG. 7 is a diagram showing an example of a static task scheduling result used for explanation.
 図7は、コア0とコア1との2つのコアを示している。優先度制御部121は、コア0のタスクに優先度を付与するとする。コア0上には、図7に示すようにタスクAからタスクFまでの6つのタスクが配置されている。コア1のタスクは、表示を省略した。また、各タスク間の依存関係が、破線の矢印で示されている。この依存関係は、矢印の根元のタスクが完了後、矢印の先のタスクの実行が可能となる関係である。 FIG. 7 shows two cores, core 0 and core 1. It is assumed that the priority control unit 121 gives priority to the task of the core 0. On the core 0, as shown in FIG. 7, six tasks from task A to task F are arranged. The display of the task of core 1 is omitted. In addition, the dependency relationship between the tasks is indicated by a dashed arrow. This dependency relationship is a relationship that allows the task at the end of the arrow to be executed after the task at the base of the arrow is completed.
 タスクAは、先頭タスクである。タスクBは、図示を省略したコア1のタスクの完了後、実行可能となるタスクである。タスクCは、タスクAの完了後、実行可能なタスクである。タスクDは、タスクAの完了後、実行可能なタスクである。タスクEは、タスクDの完了後、実行可能なタスクである。タスクFは、最終タスクであり、タスクDの完了後、実行可能なタスクである。 Task A is the top task. The task B is a task that can be executed after completion of the task of the core 1 (not shown). Task C is an executable task after task A is completed. Task D is an executable task after task A is completed. Task E is an executable task after task D is completed. Task F is the final task and is an executable task after task D is completed.
 また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時に複数のタスクが実行可能な場合、優先度の数値が小さいタスクが、実行される。なお、数値が小さいタスクの優先度が低いとする場合、数値の大小を入れ替えればよい。また、最高優先度は、「3」とする。(つまり、優先度の最小値は、「3」とする。)
 続いて、図7に示す静的タスクスケジューリング結果を用いて、優先度制御部121の動作について図面を参照して説明する。
Further, it is assumed that the priority of a task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, a task having a low priority value is executed. If the priority of a task with a small numerical value is low, the numerical value may be switched. The highest priority is “3”. (In other words, the minimum priority value is “3”.)
Next, the operation of the priority control unit 121 will be described with reference to the drawings using the static task scheduling result shown in FIG.
 図8乃至図13は、優先度制御部121が、設定する優先度を説明するための図である。図中の数値は、タスクに設定された優先度である。 8 to 13 are diagrams for explaining the priorities set by the priority control unit 121. FIG. The numerical value in the figure is the priority set for the task.
 まず、優先度制御部121は、静的タスクスケジューリング結果の先頭タスクであるタスクAの優先度を定義(付与)する。(これは、優先度制御部121が、タスクAを優先度付与対象タスクに設定することである。)タスクAは、先頭タスクである。そこで、優先度制御部121は、タスクAに最高優先度である「3」を定義する(図8)。 First, the priority control unit 121 defines (assigns) the priority of the task A that is the first task of the static task scheduling result. (This means that the priority control unit 121 sets task A as a priority assignment target task.) Task A is the first task. Therefore, the priority control unit 121 defines “3” which is the highest priority for the task A (FIG. 8).
 次に、優先度制御部121は、優先度付与対象タスクとして、タスクAの次に実行されるタスクBを設定する。そして、優先度制御部121は、タスクBの実行順序変動可能性について判断する。より具体的に説明すると、優先度制御部121は、タスクBがスケジューリングされている時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets a task B to be executed next to the task A as a priority assignment target task. Then, the priority control unit 121 determines the task B execution order change possibility. More specifically, the priority control unit 121 determines whether or not there is a possibility that the task B is executed before the scheduled time.
 ここで、タスクBは、コア1との依存関係に基づき、スケジューリングされている実行位置より前に実行されることはない。つまり、タスクBの最良実行順序は、図に示された静的タスクスケジューリング結果の実行順序と同じである。そのため、優先度制御部121は、タスクBの実行順序変動可能性がないと判断する。 Here, the task B is not executed before the scheduled execution position based on the dependency relationship with the core 1. That is, the best execution order of task B is the same as the execution order of the static task scheduling results shown in the figure. Therefore, the priority control unit 121 determines that there is no possibility that the execution order of the task B is changed.
 優先度に関わらずタスクBは、実行順序変動可能性がない。そのため、優先度制御部121は、タスクBの優先度を先行するタスクAより下げる処理を行わず、タスクBの優先度を「3」とする(図9)。 * Regardless of the priority, task B has no possibility of changing the execution order. Therefore, the priority control unit 121 does not perform the process of lowering the priority of the task B from the preceding task A, and sets the priority of the task B to “3” (FIG. 9).
 次に、優先度制御部121は、タスクBの次に実行されるタスクCを優先度付与対象タスクとする。そして、優先度制御部121は、タスクCの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets task C to be executed next to task B as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task C.
 タスクCは、タスクAとの依存関係があるが、タスクBとは依存関係がない。そのため、優先度に基づき、タスクCは、タスクBと入れ替わり、前に実行される可能性がある。つまり、タスクCの最良実行順序は、タスクAの直後である。この順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクCを実行順序変動可能性があると判断する。 Task C has a dependency relationship with task A, but has no dependency relationship with task B. Therefore, based on the priority, task C may be replaced with task B and executed before. That is, the best execution order of task C is immediately after task A. This order is different from the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the execution order of the task C may be changed.
 そこで、優先度制御部121は、タスクCの全ての先行実行タスクより低い優先度を、タスクCに付与する。今の場合、タスクCの先行実行タスクは、タスクBである。そこで、優先度制御部121は、タスクCの優先度を、タスクBの優先度「3」より下げた「4」とする(図10)。 Therefore, the priority control unit 121 gives a lower priority to the task C than all the preceding execution tasks of the task C. In this case, the task B preceding execution task is task B. Therefore, the priority control unit 121 sets the priority of task C to “4”, which is lower than the priority “3” of task B (FIG. 10).
 次に、優先度制御部121は、タスクCの次に実行されるタスクDを優先度付与対象タスクとする。そして、優先度制御部121は、タスクDの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets the task D executed next to the task C as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task D.
 タスクDは、タスクAとの依存関係があるが、タスクB及びタスクCとは依存関係がない。そのため、優先度に基づき、タスクDは、タスクB及びタスクCと入れ替わり、前に実行される可能性がある。つまり、タスクDの最良実行順序は、タスクAの直後である。この順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクDを実行順序変動可能性があると判断する。 Task D has a dependency relationship with task A, but has no dependency relationship with task B and task C. Therefore, based on the priority, task D may be replaced with task B and task C and executed before. That is, the best execution order of task D is immediately after task A. This order is different from the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the execution order of the task D may change.
 そこで、優先度制御部121は、タスクDの全ての先行実行タスクより低い優先度を、タスクDに付与する。今の場合、タスクDの先行実行タスクは、タスクB及びタスクCである。そこで、優先度制御部121は、タスクDの優先度を、タスクCの優先度「4」より下げた「5」とする(図11)。 Therefore, the priority control unit 121 gives a lower priority to the task D than all the preceding execution tasks of the task D. In this case, the pre-execution tasks for task D are task B and task C. Therefore, the priority control unit 121 sets the priority of the task D to “5”, which is lower than the priority “4” of the task C (FIG. 11).
 次に、優先度制御部121は、タスクDの次に実行されるタスクEを優先度付与対象タスクとする。そして、優先度制御部121は、タスクEの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets a task E to be executed next to the task D as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task E.
 タスクEは、タスクA及びタスクDとの依存関係がある。そのため、タスクEの最良実行順序は、タスクDの直後となる。また、タスクEは、静的タスクスケジューリング結果においても、同じタスクDの直後である。その結果、優先度制御部121は、タスクEの実行順序変動可能性がないと判断する。 Task E has a dependency relationship with Task A and Task D. Therefore, the best execution order of task E is immediately after task D. Task E is immediately after the same task D in the static task scheduling result. As a result, the priority control unit 121 determines that there is no possibility that the execution order of the task E changes.
 そこで、優先度制御部121は、タスクEの優先度を先行するタスクDの優先度より下げず、設定可能な最も高い優先度「3」を付与する(図12)。 Therefore, the priority control unit 121 gives the highest priority “3” that can be set without lowering the priority of the task E from the priority of the preceding task D (FIG. 12).
 次に、優先度制御部121は、タスクEの次に実行されるタスクFを優先度付与対象タスクとする。そして、優先度制御部121は、タスクFの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets a task F executed next to the task E as a priority assignment target task. Then, the priority control unit 121 determines the possibility of task F execution order fluctuation.
 タスクFは、タスクDとの依存関係があるが、タスクEとは依存関係がない。そのため、優先度に基づき、タスクFは、タスクEと入れ替わり、前に実行される可能性がある。つまり、タスクFの最良実行順序は、タスクDの直後である。この順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクFを実行順序変動可能性があると判断する。 Task F has a dependency relationship with task D, but has no dependency relationship with task E. Therefore, based on the priority, task F may be replaced with task E and executed before. That is, the best execution order of task F is immediately after task D. This order is different from the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the execution order of the task F may be changed.
 そこで、優先度制御部121は、タスクFの全ての先行実行タスクより低い優先度を、タスクFに付与する。今の場合、タスクFの先行実行タスクは、タスクEである。そこで、優先度制御部121は、タスクFの優先度を、タスクEの優先度「3」より下げた「4」とする(図13)。 Therefore, the priority control unit 121 gives a lower priority to the task F than all the preceding execution tasks of the task F. In this case, the task F preceding execution task is task E. Therefore, the priority control unit 121 sets the priority of the task F to “4”, which is lower than the priority “3” of the task E (FIG. 13).
 このように構成された第2の実施形態のタスクスケジューリング装置10は、第1の実施形態の効果に加え、優先度が高いタスクを多く生成する効果を得ることができる。 The task scheduling apparatus 10 of the second embodiment configured as described above can obtain an effect of generating many tasks with high priority in addition to the effect of the first embodiment.
 その理由は、第2の実施形態のタスクスケジューリング装置10は、優先度を高く設定する静的タスクスケジューリング結果の最初に実行される先頭タスクから、優先度を定義(付与)していくためである。 The reason is that the task scheduling apparatus 10 of the second embodiment defines (assigns) priorities from the first task executed at the beginning of the static task scheduling result that sets a high priority. .
 そのため、本実施形態のタスクスケジューリング装置10は、優先度が低い領域での優先度の値をできるだけ確保したい場合に、特に、有効である。 Therefore, the task scheduling apparatus 10 of this embodiment is particularly effective when it is desired to secure the priority value in the low priority area as much as possible.
 (第3の実施形態)
 静的タスクスケジューリング結果の最終タスクから優先度を定義(付与)していく手法(第2の手法)を用いるタスクスケジューリング装置10の、より詳細な実施形態について、第3の実施形態として、説明する。
(Third embodiment)
A more detailed embodiment of the task scheduling apparatus 10 that uses a method (second method) of defining (assigning) priority from the final task of the static task scheduling result will be described as a third embodiment. .
 繰り返しの説明となるが、本実施形態のタスクスケジューリング装置10が用いる手法は、静的タスクスケジューリング結果に基づく実行順序の最終タスクから優先度を定義する方法であり、次のような動作を含む。 As a repetitive description, the method used by the task scheduling apparatus 10 of the present embodiment is a method of defining priority from the final task in the execution order based on the static task scheduling result, and includes the following operations.
 まず、タスクスケジューリング装置10は、各タスクの優先度に基づいて実行順序が変わりえる箇所と、優先度に基づいて実行順序が変わらない箇所とを、分類する。タスクスケジューリング装置10は、実行順序が変わりえる箇所について、後続するタスクの優先度に対し、先行のタスクの優先度を高く定義する。この動作に基づき、タスクスケジューリング装置10は、実行順序を、維持する。 First, the task scheduling apparatus 10 classifies a place where the execution order can change based on the priority of each task and a place where the execution order does not change based on the priority. The task scheduling apparatus 10 defines the priority of the preceding task higher than the priority of the subsequent task at a place where the execution order can be changed. Based on this operation, the task scheduling apparatus 10 maintains the execution order.
 一方、タスクスケジューリング装置10は、実行順序が変わらない箇所について、先行のタスクの優先度を上げない。この動作に基づき、タスクスケジューリング装置10は、必要な優先度の個数を、抑制する。 On the other hand, the task scheduling apparatus 10 does not increase the priority of the preceding task in a place where the execution order does not change. Based on this operation, the task scheduling apparatus 10 suppresses the number of necessary priorities.
 なお、本実施形態のタスクスケジューリング装置10の構成は、第2の実施形態と同じため、構成の説明を省略する。 Note that the configuration of the task scheduling apparatus 10 of the present embodiment is the same as that of the second embodiment, and thus the description of the configuration is omitted.
 また、本実施形態のタスクスケジューリング装置10は、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで実現されても良い。 Further, the task scheduling apparatus 10 of the present embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
 次に本実施形態の優先度生成部12の動作について図面を参照して説明する。 Next, the operation of the priority generation unit 12 of this embodiment will be described with reference to the drawings.
 図14は、本実施形態の優先度生成部12の動作の一例を示すフローチャートである。 FIG. 14 is a flowchart showing an example of the operation of the priority generation unit 12 of the present embodiment.
 優先度生成部12は、図14に示す処理を、スケジューリングの対象となる各コアに対し、実施する。なお、タスクスケジューリングで用いる最低優先度は、予め、タスクスケジューリング装置10に、設定されていてもよい。 The priority generation unit 12 performs the process shown in FIG. 14 for each core to be scheduled. Note that the minimum priority used in task scheduling may be set in the task scheduling apparatus 10 in advance.
 まず、優先度制御部121は、タスクスケジューリングに用いる最低優先度を設定する(ステップS301)。優先度制御部121は、最低優先度として、任意の値を用いても良い。また、優先度制御部121は、既に説明したように、最低優先度が予め設定されていても良い。あるいは、優先度制御部121は、タスクスケジューリングで設定するタスクより重要な処理で必要とする優先度を取り除き、残った利用可能な優先度の中で最も低い優先度を、最低優先度としても良い。 First, the priority control unit 121 sets the lowest priority used for task scheduling (step S301). The priority control unit 121 may use any value as the lowest priority. Further, as described above, the priority control unit 121 may have a minimum priority set in advance. Alternatively, the priority control unit 121 may remove the priority required for processing more important than the task set by task scheduling, and set the lowest priority among the remaining available priorities as the lowest priority. .
 次に、優先度制御部121は、静的タスクスケジューリング結果の実行される順序の後ろから順にタスクを選択する。選択されたタスクは、「優先度付与対象タスク」である。優先度制御部121は、優先度付与対象タスクを、優先度付与対象タスク保持部122に、設定する(ステップS302)。 Next, the priority control unit 121 selects tasks in order from the back of the execution order of the static task scheduling results. The selected task is a “priority assignment target task”. The priority control unit 121 sets a priority assignment target task in the priority assignment target task holding unit 122 (step S302).
 続いて、優先度制御部121は、優先度付与対象タスクの実行順序の変動の可能性を、調べる(ステップS303)。 Subsequently, the priority control unit 121 examines the possibility of change in the execution order of the priority assignment target tasks (step S303).
 より具体的に説明すると、次のようになる。 More specifically, it is as follows.
 優先度制御部121は、まず、後続タスクに更に従属するタスクを、検討対象から除外する。そして、優先度制御部121は、優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合に、最も遅く実行の開始が可能となる順序である最悪実行順序を求める。そして、優先度制御部121は、最悪実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。 The priority control unit 121 first excludes tasks that are further subordinate to the subsequent task from the examination target. Then, the priority control unit 121 obtains the worst execution order, which is the order in which execution can be started latest, assuming that other tasks are executed with priority over the priority assignment target task. Then, the priority control unit 121 compares the worst execution order with the execution order of the static task scheduling result.
 順序が異なる場合、優先度制御部121は、実行順序の変動が起こり得ると判断する。一方、実行順序が等しい場合、優先度制御部121は、実行順序の変動が起こり得ないと判断する。 If the order is different, the priority control unit 121 determines that the execution order may change. On the other hand, when the execution order is equal, the priority control unit 121 determines that the execution order cannot change.
 実行順序の変動が起こり得る場合(ステップS303でYes)、優先度制御部121は、優先度付与対象タスクの全ての後続実行タスクより高い優先度を、優先度付与対象タスクに、付与する(ステップS304)。例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度の数値が小さい値を、優先度付与対象タスクに設定する。これは、優先度付与対象タスクの優先度を上げることになる。なお、優先度制御部121は、高い優先度として、優先度が一つ上がる(高くなる)値にすることが望ましい。このように設定すると、使用されない優先度が発生せず、使用する優先度の個数が少なくなるためである。優先度制御部121は、付与した優先度を優先度保持部123の優先度付与対象タスクの領域に保存する。この動作に基づき、優先度制御部121は、タスクの実行順序を、維持する。 When the execution order may be changed (Yes in step S303), the priority control unit 121 assigns a priority higher than all the subsequent execution tasks of the priority assignment target task to the priority assignment target task (step S303). S304). For example, if the priority value given to a task with high priority is small and the priority value given to a task with low priority is large, the priority control unit 121 sets a value with a low priority value to Set in the task to be given priority. This raises the priority of the priority assignment target task. Note that the priority control unit 121 desirably sets the priority to a value that increases (increases) by one as the high priority. This is because when the setting is made in this way, the priority that is not used does not occur and the number of the priorities to be used is reduced. The priority control unit 121 stores the assigned priority in the priority assignment target task area of the priority holding unit 123. Based on this operation, the priority control unit 121 maintains the task execution order.
 一方、実行順序の変動が起こり得ない場合(ステップS303 No)、優先度制御部121は、優先度付与対象タスクに付与する優先度を上げない(ステップS305)。例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度付与対象タスクに、先行するタスクの優先度の数値として同等又は高い値を付ける。なお、優先度制御部121は、優先度として、最低優先度の値を設定することが望ましい。ただし、優先度制御部121は、必要に応じて最低優先度以外で現在の優先度より低い優先度を付与しても良く、優先度を同等としても良い。優先度制御部121は、付与した優先度を優先度保持部123のうち優先度付与対象タスクの領域に保存する。この動作に基づき、優先度制御部121は、必要な優先度の個数を、削減する。 On the other hand, when the execution order cannot be changed (No in step S303), the priority control unit 121 does not increase the priority to be given to the priority assignment target task (step S305). For example, if the priority value given to a task with high priority is small and the priority value given to a task with low priority is large, the priority control unit 121 precedes the task to be given priority. Give the task priority the same or higher value. Note that the priority control unit 121 desirably sets the value of the lowest priority as the priority. However, the priority control unit 121 may assign a priority lower than the current priority other than the lowest priority as necessary, and may make the priorities equal. The priority control unit 121 stores the assigned priority in the priority assignment target area of the priority holding unit 123. Based on this operation, the priority control unit 121 reduces the number of necessary priorities.
 優先度付与対象タスクに優先度を設定すると、優先度制御部121は、スケジューリングの対象のコアの全てのタスクについて、優先度付けが終了したか否かを判定する(ステップS306)。 When the priority is set for the priority assignment target task, the priority control unit 121 determines whether or not the prioritization has been completed for all the tasks of the scheduling target core (step S306).
 終了した場合(ステップS306でYes)、優先度制御部121は、優先度の付与の処理を終了する。 If completed (Yes in step S306), the priority control unit 121 ends the priority assignment process.
 終了していない場合(ステップS306でNo)、優先度制御部121は、ステップS302に戻り、静的タスクスケジューリング結果の次のタスク(1つ前のタスク)を優先度付与対象タスクに設定して、上記の処理を繰り返す。 If not completed (No in step S306), the priority control unit 121 returns to step S302 and sets the next task (previous task) of the static task scheduling result as a priority assignment target task. The above processing is repeated.
 続いて、図7に示す静的タスクスケジューリング結果を用いて、優先度制御部121の動作についてさらに説明する。 Subsequently, the operation of the priority control unit 121 will be further described using the static task scheduling result shown in FIG.
 また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時の複数のタスクが実行可能な場合、数値が小さいタスクが、実行される。なお、数値が小さいタスクの優先度が低いとする場合、数値の大小を入れ替えればよい。最低優先度は、「5」とする。(つまり、優先度の最大値は、「5」とする。)
 図15乃至図20は、優先度制御部121が、設定する優先度を説明するための図である。図中の数値は、タスクに設定された優先度である。
Further, it is assumed that the priority of a task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, a task having a small numerical value is executed. If the priority of a task with a small numerical value is low, the numerical value may be switched. The lowest priority is “5”. (In other words, the maximum priority value is “5”.)
15 to 20 are diagrams for explaining the priority set by the priority control unit 121. The numerical value in the figure is the priority set for the task.
 まず、優先度制御部121は、静的タスクスケジューリング結果の最終タスクであるタスクFの優先度を定義(付与)する。(これは、優先度制御部121が、タスクFを優先度付与対象タスクに設定することである。)タスクFは、最終タスクである。そこで、優先度制御部121は、タスクFに最低優先度(数値としては最大値)である「5」を定義する(図15)。 First, the priority control unit 121 defines (assigns) the priority of the task F that is the final task of the static task scheduling result. (This means that the priority control unit 121 sets the task F as a priority assignment target task.) The task F is a final task. Therefore, the priority control unit 121 defines “5” which is the lowest priority (maximum value as a numerical value) for the task F (FIG. 15).
 次に、優先度制御部121は、優先度付与対象タスクとして、タスクFの前に実行されるタスクEを設定する。そして、優先度制御部121は、タスクEの実行順序変動可能性について判断する。より具体的に説明すると、優先度制御部121は、タスクEがスケジューリングされている時刻より後に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets a task E to be executed before the task F as a priority assignment target task. Then, the priority control unit 121 determines whether the execution order of the task E may be changed. More specifically, the priority control unit 121 determines whether or not there is a possibility that the task E is executed after the scheduled time.
 ここで、タスクEとタスクFは、タスクDに依存している。そのため、タスクFは、優先度に基づき、タスクEと入れ替わり、前の実行位置で実行される可能性がある。つまり、タスクEの最悪実行順序は、タスクFの後である。これは、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクEの実行順序変動可能性があると判断する。なお、タスクFは、タスクEの後続実行タスクである。 Here, task E and task F depend on task D. Therefore, task F may be replaced with task E based on the priority and executed at the previous execution position. That is, the worst execution order of task E is after task F. This is different from the execution order of the static task scheduling result. Therefore, the priority control unit 121 determines that there is a possibility that the execution order of the task E may change. Note that task F is a subsequent execution task of task E.
 そこで、優先度制御部121は、タスクEの優先度を、後続のタスクF(後続実行タスク)より上げる。今の場合、タスクFの優先度は「5」である。そこで、優先度制御部121は、タスクEの優先度を「4」とする(図16)。 Therefore, the priority control unit 121 raises the priority of the task E over the subsequent task F (subsequent execution task). In this case, the priority of task F is “5”. Therefore, the priority control unit 121 sets the priority of the task E to “4” (FIG. 16).
 次に、優先度制御部121は、タスクEの前に実行されるタスクDを優先度付与対象タスクとする。そして、優先度制御部121は、タスクDの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets the task D executed before the task E as a priority assignment target task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task D.
 タスクDは、後続するタスクE及びタスクFと依存関係がある。そのため、優先度に関わらず、タスクE及びタスクFは、タスクDの前に実行されることはない。つまり、タスクDの最悪実行順序は、静的タスクスケジューリング結果の実行順序と同じである。従って、優先度制御部121は、タスクDの実行順序変動可能性がないと判断する。 Task D has a dependency relationship with subsequent tasks E and F. Therefore, the task E and the task F are not executed before the task D regardless of the priority. That is, the worst execution order of task D is the same as the execution order of the static task scheduling result. Therefore, the priority control unit 121 determines that there is no possibility of the task D execution order fluctuation.
 実行順序変動可能性がないため、優先度制御部121は、タスクDの優先度を上げる処理を行わず、タスクDに最も低い優先度(最低優先度「5」)を付与する(図17)。 Since there is no possibility of changing the execution order, the priority control unit 121 does not perform the process of increasing the priority of the task D, and gives the lowest priority (the lowest priority “5”) to the task D (FIG. 17). .
 次に、優先度制御部121は、タスクDの前に実行されるタスクCを優先度付与対象タスクとする。そして、優先度制御部121は、タスクCの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets task C executed before task D as a priority assignment task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task C.
 なお、優先度制御部121は、タスクDに従属するタスクE及びタスクFを検討対象から除外する。除外する理由は、次のとおりである。優先度制御部121が、タスクCをタスクDより前に実行されるように優先度を設定すれば、タスクE及びタスクFは、タスクCより前に実行されることがないためである。 Note that the priority control unit 121 excludes the task E and the task F subordinate to the task D from the examination targets. The reasons for exclusion are as follows. This is because if the priority control unit 121 sets the priority so that the task C is executed before the task D, the task E and the task F are not executed before the task C.
 タスクC及びタスクDの依存関係は、同様で、タスクAとの依存関係である。そのため、タスクDは、優先度に基づいて、タスクCより前に実行される可能性がある。つまり、タスクCの最悪実行順序は、タスクDの後(タスクEの直前)となる。最悪実行順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクCの実行順序変動可能性があると判断する。 The dependency relationship between task C and task D is the same as that of task A. Therefore, the task D may be executed before the task C based on the priority. That is, the worst execution order of task C is after task D (immediately before task E). The worst execution order is different from the execution order of the static task scheduling result. For this reason, the priority control unit 121 determines that there is a possibility that the execution order of the task C may change.
 そこで、優先度制御部121は、タスクCの優先度を後続実行タスクより上げる処理を行う。より具体的には、優先度制御部121は、タスクCの全ての後続実行タスクの優先度より上げる。今の場合、対象となる後続実行タスクは、タスクDである。そのため、優先度制御部121は、タスクCの優先度を、タスクDの優先度「5」より高い優先度「4」とする(図18)。 Therefore, the priority control unit 121 performs a process of raising the priority of task C over the subsequent execution task. More specifically, the priority control unit 121 raises the priority of all subsequent execution tasks of task C. In this case, the target subsequent execution task is task D. Therefore, the priority control unit 121 sets the priority of the task C to a priority “4” higher than the priority “5” of the task D (FIG. 18).
 次に、優先度制御部121は、タスクCの前に実行されるタスクBを優先度付与対象タスクとする。そして、優先度制御部121は、タスクBの実行順序変動可能性を判断する。 Next, the priority control unit 121 sets task B executed before task C as a priority assignment task. Then, the priority control unit 121 determines the possibility of task B execution order fluctuation.
 ただし、タスクDに従属するタスクE、タスクFは、タスクBがタスクDより前に実行されるよう優先度付けされればタスクBより前に実行されることはない。そのため、優先度制御部121は、タスクE及びタスクFを、順序変動の検討対象から除外する。 However, the task E and the task F subordinate to the task D are not executed before the task B if the priority is given so that the task B is executed before the task D. Therefore, the priority control unit 121 excludes the task E and the task F from the order variation consideration targets.
 タスクC及びタスクDは、共に、タスクAからの依存が存在し、他の依存関係がない。つまり、タスクC及びタスクDは、タスクBとの依存関係がない。そのため、タスクC及びタスクDは、優先度に基づき、タスクBと入れ替わり、前に実行される可能性がある。つまり、タスクBの最悪実行順序は、タスクDの後(検討対象から削除したタスクEの直前)である。最悪実行順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクBの実行順序変動可能性があると判断する。 Both task C and task D have dependencies from task A and no other dependencies. That is, task C and task D have no dependency with task B. Therefore, task C and task D may be replaced with task B based on the priority and executed before. That is, the worst execution order of task B is after task D (immediately before task E deleted from the examination target). The worst execution order is different from the execution order of the static task scheduling result. Therefore, the priority control unit 121 determines that there is a possibility of task B execution order fluctuation.
 そこで、優先度制御部121は、タスクBの優先度を、タスクBの全ての後続実行タスクの優先度より上げる。今の場合、対象となる後続実行タスクは、タスクC及びタスクDである。そのため、優先度制御部121は、タスクBの優先度を、タスクCの優先度「4」より高い優先度「3」とする(図19)。 Therefore, the priority control unit 121 raises the priority of task B higher than the priorities of all subsequent execution tasks of task B. In this case, the target subsequent execution tasks are task C and task D. Therefore, the priority control unit 121 sets the priority of the task B to a priority “3” higher than the priority “4” of the task C (FIG. 19).
 次に、優先度制御部121は、タスクBの前に実行されるタスクAを優先度付与対象タスクとする。そして、優先度制御部121は、タスクAの実行順序変動可能性を判断する。まず、優先度制御部121は、タスクE及びタスクFを検討対象から除外する。また、タスクC及びタスクDは、タスクAと依存関係があるため、タスクAより前に実行されることはない。さらに、タスクBは、コア1との依存関係に基づき、タスクAより前に実行されることはない。つまり、タスクAより前に実行されるタスクはない。つまり、タスクAの最悪実行順序は、静的タスクスケジューリング結果の実行順序と同じである。 Next, the priority control unit 121 sets task A executed before task B as a priority assignment task. Then, the priority control unit 121 determines the possibility of changing the execution order of the task A. First, the priority control unit 121 excludes task E and task F from the examination targets. Further, since task C and task D have a dependency relationship with task A, task C and task D are not executed before task A. Furthermore, the task B is not executed before the task A based on the dependency relationship with the core 1. That is, no task is executed before task A. That is, the worst execution order of task A is the same as the execution order of the static task scheduling result.
 そこで、優先度制御部121は、タスクAの実行変動可能性がないと判断する。その結果、優先度制御部121は、タスクAに最低優先度「5」を付与する(図20)。 Therefore, the priority control unit 121 determines that there is no possibility of task A execution fluctuation. As a result, the priority control unit 121 gives the lowest priority “5” to the task A (FIG. 20).
 このように構成された第3の実施形態のタスクスケジューリング装置10は、第1の実施形態の効果に加え、優先度が低いタスクを多く生成する効果を得ることができる。 The task scheduling apparatus 10 of the third embodiment configured as described above can obtain the effect of generating many tasks with low priority in addition to the effect of the first embodiment.
 その理由は、第3の実施形態のタスクスケジューリング装置10は、優先度を低く設定する静的タスクスケジューリング結果の最後に実行される最終タスクから、優先度を定義(付与)していくためである。 The reason is that the task scheduling apparatus 10 of the third embodiment defines (assigns) the priority from the final task executed at the end of the static task scheduling result that sets the priority to a low level. .
 そのため、本実施形態のタスクスケジューリング装置10は、優先度が高い領域での優先度の値をできるだけ確保したい場合に、特に、有効である。 Therefore, the task scheduling apparatus 10 of the present embodiment is particularly effective when it is desired to secure the priority value in the high priority area as much as possible.
 (第4の実施形態)
 次に、第4の実施形態について図面を参照して説明する。
(Fourth embodiment)
Next, a fourth embodiment will be described with reference to the drawings.
 まず、以下の説明において、実行順序の変動が外部へ影響するタスクを、「順序変動禁止タスク」と呼ぶ。順序変動禁止タスクとして、例えば、I/Oアクセスを行うタスク、又は、他のコア上のタスクとの通信の依存関係があるタスクが、考えられる。一方、実行順序の変動が外部に影響しないタスクとして、例えば、コアでの演算処理に限られたタスク、又は、依存関係が同一コア内のタスクに限れられたタスクが、考えられる。 First, in the following description, a task in which a change in execution order affects the outside is referred to as a “order fluctuation prohibited task”. As the order variation prohibition task, for example, a task that performs I / O access or a task that has a communication dependency with a task on another core is conceivable. On the other hand, as a task whose fluctuation in the execution order does not affect the outside, for example, a task limited to arithmetic processing in the core or a task whose dependency is limited to tasks in the same core can be considered.
 第4の実施形態のタスクスケジューリング装置10は、順序変動禁止タスクの実行順序が変動しない範囲で、実行順序の変動が外部に影響しないタスク群について、同じ優先度を用いる。このような優先度の付与に基づき、本実施形態のタスクスケジューリング装置10は、必要な優先度の個数を、第1乃至第3の実施形態より、さらに、削減する。 The task scheduling apparatus 10 of the fourth embodiment uses the same priority for a task group in which the change in the execution order does not affect the outside as long as the execution order of the order change prohibition task does not change. Based on such assignment of priorities, the task scheduling apparatus 10 of the present embodiment further reduces the number of necessary priorities compared to the first to third embodiments.
 本実施形態のタスクスケジューリング装置10は、静的タスクスケジューリング結果の先頭タスクから優先度を定義(付与)する手法(第1の手法)と、最終タスクから定義(付与)する手法(第2の手法)との、どちらも、用いることができる。以下の説明では、一例として、先頭タスクから優先度を定義する手法を用いて、説明する。 The task scheduling apparatus 10 according to the present embodiment includes a method (first method) for defining (giving) priority from the first task of the static task scheduling result, and a method (second method) for defining (giving) the last task. Both) can be used. In the following description, as an example, a description will be given using a method of defining priority from the top task.
 本実施形態の構成は、第1の実施形態乃至第3の実施形態と同様のため、構成の説明を省略する。 Since the configuration of this embodiment is the same as that of the first to third embodiments, description of the configuration is omitted.
 なお、本実施形態のタスクスケジューリング装置10は、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで、実現されても良い。 Note that the task scheduling apparatus 10 of the present embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
 図21は、本実施形態の優先度生成部12の動作の一例を示すフローチャートである。なお、優先度生成部12は、各コアについて、以下で説明する処理を、実施する。また、最高優先度についても、第2の実施形態と同様に、予め、最高優先度が設定されていても良い。 FIG. 21 is a flowchart showing an example of the operation of the priority generation unit 12 of the present embodiment. In addition, the priority generation part 12 implements the process demonstrated below about each core. As for the highest priority, the highest priority may be set in advance as in the second embodiment.
 まず、優先度制御部121は、タスクスケジューリングで用いる最高優先度を、設定する(ステップS401)。ここで、優先度制御部121は、最高優先度として、任意の値を用いても良い。また、優先度制御部121は、既に説明したように、最高優先度が、予め、設定されても良い。あるいは、優先度制御部121は、タスクスケジューリングで設定するタスクより重要な処理で必要とする優先度を取り除き、残った利用可能な優先度の中で最も高い優先度を、最高優先度としても良い。なお、静的タスクスケジューリング結果の最終タスクから優先度を設定する場合、優先度制御部121は、最低優先度を設定する。 First, the priority control unit 121 sets the highest priority used in task scheduling (step S401). Here, the priority control unit 121 may use any value as the highest priority. Further, as described above, the priority control unit 121 may set the highest priority in advance. Alternatively, the priority control unit 121 may remove the priority required for processing more important than the task set by task scheduling, and set the highest priority among the remaining available priorities as the highest priority. . Note that when the priority is set from the final task of the static task scheduling result, the priority control unit 121 sets the lowest priority.
 次に、優先度制御部121は、優先度付与対象タスクを、選択する。そして、優先度制御部121は、選択した優先度付与対象タスクを、優先度付与対象タスク保持部122に、設定(保持)する(ステップS402)。 Next, the priority control unit 121 selects a priority assignment target task. Then, the priority control unit 121 sets (holds) the selected priority assignment target task in the priority assignment target task holding unit 122 (step S402).
 次に、優先度制御部121は、優先度付与対象タスクの実行順序変動可能性を、調べる(ステップS403)。より具体的には、優先度制御部121は、次のように動作する。 Next, the priority control unit 121 checks the possibility of change in the execution order of the priority assignment target tasks (step S403). More specifically, the priority control unit 121 operates as follows.
 優先度制御部121は、優先度付与対象タスクの最良実行順序を求める。そして、優先度制御部121は、求めた最良実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。順序が異なる場合、優先度制御部121は、実行順序の変動が起こり得ると判断する。実行順序が等しい場合、優先度制御部121は、実行順序の変動が起こり得ないと判断する。 The priority control unit 121 obtains the best execution order of the priority assignment target tasks. Then, the priority control unit 121 compares the obtained best execution order with the execution order of the static task scheduling result. When the order is different, the priority control unit 121 determines that the execution order may change. When the execution order is equal, the priority control unit 121 determines that the execution order cannot change.
 実行順序の変動が起こり得ない場合(ステップS403でNo)、優先度制御部121は、優先度を下げない処理を用いて、必要な優先度の個数を、削減する(ステップS407)。具体的には、優先度制御部121は、次のような動作を実行する。 If the execution order cannot be changed (No in step S403), the priority control unit 121 reduces the number of necessary priorities using a process that does not lower the priority (step S407). Specifically, the priority control unit 121 performs the following operation.
 優先度制御部121は、優先度の数値として先行するタスクの優先度と同等又は高い優先度を選択し、優先度保持部123の優先度付与対象タスクの領域に保存する。 The priority control unit 121 selects a priority equal to or higher than the priority of the preceding task as a numerical value of the priority, and stores the priority in the priority assignment target task area of the priority holding unit 123.
 なお、優先度制御部121は、最高優先度の値を設定することが望ましい。ただし、優先度制御部121は、必要に応じて、最高優先度以外で先行するタスクの優先度より高い優先度に上げる、又は、優先度を先行するタスクの優先度と同等としてもよい。優先度を設定後、優先度制御部121は、ステップS408へと進む。 It should be noted that the priority control unit 121 desirably sets the highest priority value. However, the priority control unit 121 may increase the priority to a priority higher than the priority of the preceding task other than the highest priority, if necessary, or make the priority equal to the priority of the preceding task. After setting the priority, the priority control unit 121 proceeds to step S408.
 一方、実行順序の変動が起こり得る場合(ステップS403 Yes)、優先度制御部121は、優先度付与対象タスクの実行順序の変動に基づき、外部への影響があるか否か判定する(ステップS404)。 On the other hand, if a change in the execution order can occur (Yes in step S403), the priority control unit 121 determines whether there is an external influence based on the change in the execution order of the priority assignment target tasks (step S404). ).
 ここで、優先度付与対象タスクが順序変動禁止タスクならば、当然、実行順序の変更は、外部へ影響する。しかし、ステップS404で優先度制御部121が判断する外部への影響の有無は、優先度付与対象タスクが順序変動禁止タスクの場合に限られない。そのため、優先度付与対象タスクが順序変動禁止タスクの場合に限らず、優先度制御部121は、実行順序の変更に基づく外部への影響を判定する。 Here, if the priority assignment target task is a sequence variation prohibition task, naturally, the change of the execution order affects the outside. However, the presence or absence of an external influence determined by the priority control unit 121 in step S404 is not limited to the case where the priority assignment target task is an order variation prohibited task. Therefore, not only when the priority assignment target task is an order variation prohibition task, the priority control unit 121 determines the external influence based on the change of the execution order.
 例えば、優先度付与対象タスクが順序変動禁止タスク以外であっても、順序変動禁止タスクが、優先度付与対象タスクの先行実行タスクに、含まれる場合がある。その場合、順序変動禁止タスクの実行順序は、優先度付与対象タスクの実行順序に基づき、変更となる可能性がある。つまり、外部への影響が、順序変動禁止タスクでない優先度付与対象タスクの実行順序に基づいて、発生する場合がある。そこで、先行実行タスクの一部が、順序変動禁止タスクの場合、優先度制御部121は、順序変動禁止タスクに影響を与えない範囲で、外部への影響がない場合の処理を、優先度付与対象タスクに、適用する。 For example, even if the priority assignment target task is other than the order change prohibition task, the order change prohibition task may be included in the preceding execution task of the priority assignment target task. In this case, the execution order of the order variation prohibition task may be changed based on the execution order of the priority assignment target tasks. In other words, the external influence may occur based on the execution order of the priority assignment target tasks that are not the order variation prohibition tasks. Therefore, when a part of the pre-execution task is an order change prohibition task, the priority control unit 121 assigns a priority to the process when there is no influence on the outside as long as the order change prohibition task is not affected. Apply to the target task.
 外部への影響がある場合(ステップS404でYes)、優先度制御部121は、優先度付与対象タスクの全ての先行実行タスクより低い優先度を、優先度付与対象タスクに、付与する(ステップS405)。 When there is an external influence (Yes in Step S404), the priority control unit 121 assigns a priority lower than all the prior execution tasks of the priority assignment target task to the priority assignment target task (Step S405). ).
 例えば、優先度が低いと大きな数値を付与する場合、優先度制御部121は、優先度付与対象タスクの優先度の数値に大きな値を付与する。そして、優先度制御部121は、選択した優先度を、優先度保持部123の優先度付与対象タスクの領域に保存する。なお、優先度制御部121は、優先度が一つ下がる値を選択することが望ましい。その後、優先度制御部121は、ステップS408に進む。 For example, when a large numerical value is assigned when the priority is low, the priority control unit 121 assigns a large value to the numerical value of the priority of the priority assignment target task. Then, the priority control unit 121 stores the selected priority in the priority assignment target task area of the priority holding unit 123. Note that the priority control unit 121 desirably selects a value that decreases the priority by one. Thereafter, the priority control unit 121 proceeds to step S408.
 外部への影響がない場合(ステップS404でNo)、優先度制御部121は、優先度付与対象タスクに、次の条件を満足する優先度を付与する。 When there is no influence on the outside (No in step S404), the priority control unit 121 assigns a priority that satisfies the following condition to the priority assignment target task.
 条件1:優先度付与対象タスクが最良実行順序で実行された場合の実行開始時刻以降で、全ての、優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全ての順序変動禁止タスク(以下、「先行実行の順序変動禁止タスク」と言う)の優先度より低い優先度。 Condition 1: Prior to the execution start time in the execution order of the static task scheduling results of all priority assignment tasks after the execution start time when the priority assignment target tasks are executed in the best execution order The priority is lower than the priority of all the order change prohibition tasks (hereinafter referred to as the "previous execution order change prohibition task") that are executed.
 条件2:優先度付与対象タスクの最良実行順序で実行された場合の実行開始時刻以降で、優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する順序変動禁止タスクでないタスク(以下、「先行実行の順序変動可能タスク」と言う)と同等の優先度。 Condition 2: Execute after the execution start time in the execution order of the static task scheduling result of the priority assignment target task after the execution start time when the priority assignment target task is executed in the best execution order The same priority as a task that is not an order change prohibition task (hereinafter referred to as a “previous execution order change enable task”).
 例えば、優先度が低い場合に大きな数値を付与とする。そして、先行実行の順序変動禁止タスクの優先度が「3」の場合、優先度制御部121は、優先度として、例えば、「4」を付与する。そして、優先度制御部121は、選択した優先度を、優先度保持部123の優先度付与対象タスクの領域に保存する。なお、優先度制御部121は、条件2の先行実行の順序変動可能タスクと同じ優先度として、最も高い優先度を選択することが望ましい。その後、優先度制御部121は、ステップS408に進む。 For example, when the priority is low, a large numerical value is given. When the priority of the order execution prohibition task that is executed in advance is “3”, the priority control unit 121 assigns “4” as the priority, for example. Then, the priority control unit 121 stores the selected priority in the priority assignment target task area of the priority holding unit 123. It is desirable that the priority control unit 121 selects the highest priority as the same priority as that of the pre-execution order changeable task of the condition 2. Thereafter, the priority control unit 121 proceeds to step S408.
 ステップS405乃至S407の後、優先度制御部121は、対象となっているコアの全てのタスクについて優先度付けが終了したか否かを判定する(ステップS408)。 After steps S405 to S407, the priority control unit 121 determines whether or not prioritization has been completed for all tasks of the target core (step S408).
 全てのタスクについて優先度付けが終了した場合(ステップS408 Yes)、優先度制御部121は、処理を終了する。 When the prioritization has been completed for all tasks (Yes in step S408), the priority control unit 121 ends the process.
 優先度付けしてないタスクがある場合(ステップS408 No)、優先度制御部121は、ステップS402へと戻り、次のタスクを優先度付与対象タスクに設定し、これまで説明した処理を繰り返す。 If there is a task that has not been prioritized (No in step S408), the priority control unit 121 returns to step S402, sets the next task as a priority assignment target task, and repeats the processing described so far.
 次に、静的タスクスケジューリング結果の一例を参照して、本実施形態の動作について説明する。 Next, the operation of this embodiment will be described with reference to an example of a static task scheduling result.
 図22は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。 FIG. 22 is a diagram showing an example of a static task scheduling result used for explanation.
 図22は、コア0とコア1との2つのコアを示している。優先度制御部121は、コア0のタスクに優先度を付与するとする。コア0上には、図22に示すようにタスクGからタスクNまでの8つのタスクが配置されている。図22において、コア1のタスクの表示を、省略した。また、図22において、各タスク間の依存関係が、破線の矢印で示されている。この依存関係は、矢印の根元のタスクが完了後、矢印の先のタスクの実行が可能となる関係である。 FIG. 22 shows two cores, core 0 and core 1. It is assumed that the priority control unit 121 gives priority to the task of the core 0. On the core 0, eight tasks from task G to task N are arranged as shown in FIG. In FIG. 22, the display of the task of the core 1 is omitted. Further, in FIG. 22, the dependency relationship between the tasks is indicated by a dashed arrow. This dependency relationship is a relationship that allows the task at the end of the arrow to be executed after the task at the base of the arrow is completed.
 タスクGは、先頭タスクである。タスクHは、タスクGの終了後、実行可能なタスクである。タスクIは、タスクGの終了後、実行可能なタスクである。タスクJは、タスクGの終了後、実行可能なタスクである。タスクKは、タスクHの終了後、実行可能なタスクである。タスクLは、タスクIの終了後、実行可能なタスクである。タスクMは、タスクJの終了後、実行可能なタスクである。タスクNは、最終タスクであり、タスクL及びタスクMの終了後、実行可能なタスクである。また、タスクJ、タスクK及びタスクNは、順序変動禁止タスクとする。そのため、タスクJ、タスクK、タスクNは、依存関係の先がコア1となっている矢印を付した。タスクJ、タスクK及びタスクN以外のタスクは、順序変動禁止タスクではなく、順序変動禁止タスクへの影響がない範囲で実行順序の変動が許可される。 Task G is the top task. Task H is a task that can be executed after task G ends. Task I is an executable task after task G ends. Task J is an executable task after task G ends. Task K is an executable task after task H ends. Task L is a task that can be executed after task I ends. Task M is an executable task after task J is completed. The task N is a final task and is an executable task after the tasks L and M are finished. Task J, task K, and task N are assumed to be order variation prohibited tasks. Therefore, task J, task K, and task N are attached with an arrow whose dependency is the core 1. Tasks other than task J, task K, and task N are not order variation prohibited tasks, and are allowed to change the execution order within a range that does not affect the order variation prohibited tasks.
 また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時の複数のタスクが実行可能な場合、優先度の数値が小さいタスクが、実行される。なお、数値が小さいタスクの優先度が低いとする場合、数値の大小を入れ替えればよい。また、最高優先度は、「1」とする。(つまり、優先度の最小値は、「1」とする。)
 本実施形態の説明の参考として、第2の実施形態のタスクスケジューリング装置10が図22に示す静的タスクスケジューリング結果を付与する優先度を示しておく。
Further, it is assumed that the priority of a task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, a task having a low priority value is executed. If the priority of a task with a small numerical value is low, the numerical value may be switched. The highest priority is “1”. (In other words, the minimum priority value is “1”.)
As a reference for the description of the present embodiment, priorities to which the task scheduling apparatus 10 of the second embodiment gives the static task scheduling result shown in FIG. 22 are shown.
 図23は、第2の実施形態のタスクスケジューリング装置10が付与する優先度を示す図である。第2の実施形態のタスクスケジューリング装置10は、優先度として、「1」から「6」と、タスクの数の8より少ない6個の優先度を使用する。 FIG. 23 is a diagram illustrating priorities assigned by the task scheduling apparatus 10 according to the second embodiment. The task scheduling apparatus 10 according to the second embodiment uses six priorities of “1” to “6”, which are smaller than eight, as the priorities.
 続いて、図22に示す静的タスクスケジューリング結果を用いて、本実施形態のタスクスケジューリング装置10の動作について図面を参照して説明する。 Subsequently, the operation of the task scheduling apparatus 10 of the present embodiment will be described with reference to the drawings using the static task scheduling result shown in FIG.
 図24乃至図30は、本実施形態の優先度制御部121が、設定する優先度を説明するための図である。図中の数値は、タスクに定義(設定、又は、付与)された優先度である。 24 to 30 are diagrams for explaining the priority set by the priority control unit 121 of the present embodiment. The numerical value in the figure is the priority defined (set or assigned) to the task.
 まず、優先度制御部121は、コア0で最初に実行されるタスクGを優先度付与対象タスクと設定する。そして、優先度制御部121は、タスクGの優先度を定義する。優先度制御部121は、タスクGの優先度として最高優先度(優先度の最小値)の「1」を設定する。 First, the priority control unit 121 sets a task G to be executed first in the core 0 as a priority assignment target task. The priority control unit 121 defines the priority of the task G. The priority control unit 121 sets “1” as the highest priority (minimum priority value) as the priority of the task G.
 次に、優先度制御部121は、優先度付与対象タスクを、タスクGの次に実行されるタスクHとする。そして、優先度制御部121は、優先度付与対象タスク(タスクH)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクHが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as a task H to be executed next to the task G. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task H). Specifically, the priority control unit 121 determines whether or not the task H is likely to be executed before the time of the execution order of the static task scheduling result.
 タスクHは、タスクGとの依存関係に基づき、静的タスクスケジューリング結果の実行位置(実行順序)より前に実行されることはない。つまり、タスクHの最良実行順序は、図22に示された静的タスクスケジューリング結果の実行順序と同じタスクGの直後である。このため、優先度制御部121は、タスクHを実行順序変動可能性なしと判断する。 The task H is not executed before the execution position (execution order) of the static task scheduling result based on the dependency relationship with the task G. That is, the best execution order of task H is immediately after task G, which is the same as the execution order of the static task scheduling results shown in FIG. For this reason, the priority control unit 121 determines that the task H has no possibility of changing the execution order.
 判断後、優先度制御部121は、タスクHに優先度を付与する。既に説明したとおり、タスクHは、優先度に関わらず、静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性がない。そのため、優先度制御部121は、タスクHの優先度を、先行するタスク(タスクG)より下げる処置は行わず、タスクGと同じ優先度(今の場合「1」)とする(図24)。 After the determination, the priority control unit 121 gives priority to the task H. As already described, the task H is not likely to be executed before the time of the execution order of the static task scheduling result regardless of the priority. For this reason, the priority control unit 121 does not perform a process of lowering the priority of the task H from the preceding task (task G), and sets the same priority as the task G (in this case, “1”) (FIG. 24). .
 次に、優先度制御部121は、優先度付与対象タスクを、タスクHの次に実行されるタスクIとする。そして、優先度制御部121は、優先度付与対象タスク(タスクI)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクIが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as the task I to be executed next to the task H. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task I). Specifically, the priority control unit 121 determines whether or not the task I is likely to be executed before the time of the execution order of the static task scheduling result.
 タスクIは、タスクGとの依存関係が存在するが、先行するタスクHとの依存関係はない。そのため、タスクIは、優先度に基づき、タスクHと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクIの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクGの直後である。このため、優先度制御部121は、タスクIを実行順序変動可能性ありと判断する。 Task I has a dependency relationship with task G, but has no dependency relationship with preceding task H. Therefore, task I may be replaced with task H based on the priority and executed before the execution order of the static task scheduling result. That is, the best execution order of task I is immediately after task G, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task I may change the execution order.
 判断後、優先度制御部121は、タスクIに優先度を付与する。優先度制御部121は、タスクIを、実行順序変動可能性ありの判断している。しかし、タスクIは、順序変動禁止タスクではない。すなわち、優先度制御部121は、外部への影響を与えない範囲で、タスクIの実行順序の変動が許可される。 After the determination, the priority control unit 121 gives priority to the task I. The priority control unit 121 determines that the task I may change in execution order. However, task I is not an order change prohibition task. That is, the priority control unit 121 is allowed to change the task I execution order within a range that does not affect the outside.
 今回の例において、タスクIに対応する先行実行の順序変動禁止タスクは、ない。 In this example, there is no pre-execution order change prohibition task corresponding to task I.
 タスクIの実行順序の変動可能範囲は、最良実行順序以降である。また、繰り返しになるが、タスクIの最良実行順序は、タスクGの直後である。そのため、タスクIに対応する先行実行の順序変動可能タスクは、タスクHである。そのため、優先度制御部121は、タスクIの優先度をタスクHより下げる処置を行わない。つまり、優先度制御部121は、タスクIの優先度として、タスクIの先行実行の順序変動可能タスク(今の場合、タスクH)の優先度と同じ優先度(今の場合「1」)と定義する(図25)。 * The variable range of the task I execution order is after the best execution order. Again, the best execution order of task I is immediately after task G. Therefore, the task that can be changed in order corresponding to the task I is the task H. Therefore, the priority control unit 121 does not perform a process of lowering the priority of the task I from the task H. In other words, the priority control unit 121 sets, as the priority of the task I, the same priority (in this case, “1”) as the priority of the task I that can be executed in an orderly variable order (task H in this case). Define (FIG. 25).
 次に、優先度制御部121は、優先度付与対象タスクを、タスクIの次に実行されるタスクJとする。そして、優先度制御部121は、優先度付与対象タスク(タスクJ)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクJが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as the task J to be executed next to the task I. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task J). Specifically, the priority control unit 121 determines whether or not the task J is likely to be executed before the time of the execution order of the static task scheduling result.
 タスクJは、タスクGからの依存関係が存在するが、その他の先行するタスクとの依存関係はない。そのため、タスクJは、優先度に基づき、タスクH及びタスクIと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクJの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクGの直後である。このため、優先度制御部121は、タスクJを実行順序変動可能性ありと判断する。 Task J has a dependency relationship from task G, but has no dependency relationship with other preceding tasks. Therefore, task J may be replaced with task H and task I based on the priority, and executed before the execution order of the static task scheduling result. That is, the best execution order of task J is immediately after task G, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task J may change the execution order.
 判断後、優先度制御部121は、タスクJに優先度を付与する。優先度制御部121は、タスクJを、実行順序変動可能性ありと判断している。また、タスクJは、順序変動禁止タスクである。従って、優先度制御部121は、タスクJの優先度を下げる処置を行う。タスクJの最良実行順序は、タスクGの直後である。従って、優先度制御部121は、タスクJの優先度として、全ての先行実行タスク(タスクH、タスクI)の優先度の中で最も低い優先度(今の場合「1」)より低い優先度(例えば「2」)を定義する(図26)。 After the determination, the priority control unit 121 gives priority to the task J. The priority control unit 121 determines that the task J may be changed in execution order. Task J is an order variation prohibition task. Accordingly, the priority control unit 121 performs a process for lowering the priority of the task J. The best execution order of task J is immediately after task G. Therefore, the priority control unit 121 sets the priority of the task J as a priority lower than the lowest priority (in this case, “1”) among all prior execution tasks (task H, task I). (For example, “2”) is defined (FIG. 26).
 次に、優先度制御部121は、優先度付与対象タスクを、タスクJの次に実行されるタスクKとする。そして、優先度制御部121は、優先度付与対象タスク(タスクK)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクKが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as the task K to be executed next to the task J. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task K). Specifically, the priority control unit 121 determines whether or not the task K is likely to be executed before the time of the execution order of the static task scheduling result.
 タスクKは、タスクHとの依存関係が存在するが、タスクI及びタスクJとの依存関係がない。そのため、タスクKは、優先度に基づき、タスクI及びタスクJと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクKの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクHの直後である。このため、優先度制御部121は、タスクKを実行順序変動可能性ありと判断する。 Task K has a dependency relationship with task H, but does not have a dependency relationship with task I or task J. For this reason, the task K may be replaced with the task I and the task J based on the priority, and may be executed before the execution order of the static task scheduling result. That is, the best execution order of task K is immediately after task H, unlike the execution order of the static task scheduling results. Therefore, the priority control unit 121 determines that the task K may change the execution order.
 判定後、優先度制御部121は、タスクKに優先度を付与する。優先度制御部121は、タスクKを、実行順序変動可能性ありと判断している。また、タスクKは、順序変動禁止タスクである。従って、優先度制御部121は、タスクKの優先度を下げる処置を行う。タスクKの最良実行順序は、タスクHの直後である。従って、優先度制御部121は、タスクKの優先度として、全ての先行実行タスク(タスクI、タスクJ)の優先度の中で最も低い優先度(今の場合「2」)より低い優先度(例えば、「3」)を定義する(図27)。 After the determination, the priority control unit 121 gives priority to the task K. The priority control unit 121 determines that the task K may change the execution order. Task K is an order variation prohibition task. Accordingly, the priority control unit 121 performs a process for lowering the priority of the task K. The best execution order of task K is immediately after task H. Therefore, the priority control unit 121 sets the priority of the task K that is lower than the lowest priority (in this case, “2”) among the priorities of all preceding execution tasks (task I and task J). (For example, “3”) is defined (FIG. 27).
 次に、優先度制御部121は、優先度付与対象タスクを、タスクKの次に実行されるタスクLとする。そして、優先度制御部121は、優先度付与対象タスク(タスクL)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクLが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as the task L to be executed next to the task K. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task L). Specifically, the priority control unit 121 determines whether or not the task L is likely to be executed before the time of the execution order of the static task scheduling result.
 タスクLは、タスクIとの依存関係が存在するが、タスクJ及びタスクKとの依存関係がない。そのため、タスクLは、優先度に基づき、タスクJ及びタスクKと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクLの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクIの直後である。このため、優先度制御部121は、タスクLを実行順序変動可能性ありと判断する。 Task L has a dependency relationship with task I, but has no dependency relationship with task J and task K. Therefore, the task L may be replaced with the task J and the task K based on the priority, and may be executed before the execution order of the static task scheduling result. That is, the best execution order of task L is immediately after task I, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task L may change the execution order.
 判断後、優先度制御部121は、タスクLに優先度を付与する。優先度制御部121は、タスクLを実行順序変動可能性ありの判断している。また、タスクLは、順序変動禁止タスクではない。すなわち、優先度制御部121は、外部への影響を与えない範囲で、タスクLの実行順序の変動が許可されている。 After the determination, the priority control unit 121 gives priority to the task L. The priority control unit 121 determines that the execution order of the task L may be changed. The task L is not an order variation prohibition task. That is, the priority control unit 121 is allowed to change the execution order of the task L within a range that does not affect the outside.
 ただし、今回の場合、タスクLの先行実行タスク(タスクJ及びタスクK)は、全て順序変動禁止タスクである。従って、タスクLは、先行実行タスク(タスクJ及びタスクK)と入れ替わることができない。そのため、優先度制御部121は、タスクLの優先度として、全ての先行実行タスク(タスクJ、タスクK)の優先度の中で最も低い優先度(今の場合「3」)より低い優先度(例えば、「4」)を定義する(図28)。 However, in this case, all the pre-execution tasks (task J and task K) of task L are order variation prohibited tasks. Therefore, the task L cannot be replaced with the preceding execution tasks (task J and task K). Therefore, the priority control unit 121 sets the priority of the task L as a priority lower than the lowest priority (in this case, “3”) among all prior execution tasks (task J, task K). (For example, “4”) is defined (FIG. 28).
 次に、優先度制御部121は、優先度付与対象タスクを、タスクLの次に実行されるタスクMとする。そして、優先度制御部121は、優先度付与対象タスク(タスクM)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクMの静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as the task M to be executed next to the task L. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task M). Specifically, the priority control unit 121 determines whether or not there is a possibility of execution before the execution order time of the static task scheduling result of the task M.
 タスクMは、タスクJとの依存関係が存在するが、タスクK及びタスクLとの依存関係がない。そのため、タスクMは、優先度に基づき、タスクK及びタスクLと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクMの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクJの直後である。このため、優先度制御部121は、タスクMを実行順序変動可能性ありと判断する。 Task M has a dependency relationship with task J, but does not have a dependency relationship with task K and task L. Therefore, the task M may be replaced with the task K and the task L based on the priority, and may be executed before the execution order of the static task scheduling result. That is, the best execution order of task M is immediately after task J, unlike the execution order of the static task scheduling results. For this reason, the priority control unit 121 determines that the task M may change the execution order.
 判断後、優先度制御部121は、タスクMに優先度を付与する。優先度制御部121は、タスクMを実行順序変動可能性ありの判断している。また、タスクMは、順序変動禁止タスクではない。すなわち、優先度制御部121は、外部への影響を与えない範囲で、タスクMの実行順序の変動が許可される。 After the determination, the priority control unit 121 gives priority to the task M. The priority control unit 121 determines that the execution order of the task M may be changed. The task M is not an order variation prohibition task. That is, the priority control unit 121 is allowed to change the execution order of the task M within a range that does not affect the outside.
 ただし、タスクMの先行実行タスク(タスクK、タスクL)の中で、タスクKは、順序変動禁止タスクである。つまり、タスクMは、タスクKと入れ替わることができない。そのため、優先度制御部121は、タスクMの優先度として、先行実行の順序変動禁止タスク(タスクK)の優先度より下げた優先度で、先行実行の順序変動可能タスク(タスクL)の優先度(今の場合「4」)と同等の優先度(「4」)を定義する(図29)。 However, among the pre-execution tasks (task K, task L) of task M, task K is an order variation prohibited task. That is, task M cannot be replaced with task K. Therefore, the priority control unit 121 uses the priority of the task M, which is lower than the priority of the preceding execution order change prohibition task (task K), as the priority of the task M. A priority (“4”) equivalent to the degree (“4” in this case) is defined (FIG. 29).
 次に、優先度制御部121は、優先度付与対象タスクを、タスクMの次に実行されるタスクNとする。そして、優先度制御部121は、優先度付与対象タスク(タスクN)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクNの静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。 Next, the priority control unit 121 sets the priority assignment target task as the task N to be executed next to the task M. Then, the priority control unit 121 determines the possibility of changing the execution order of the priority assignment target task (task N). Specifically, the priority control unit 121 determines whether or not there is a possibility of execution before the time of the execution order of the static task scheduling result of the task N.
 タスクNは、タスクL及びタスクMとの依存関係が存在する。また、タスクL及びタスクMは、順序変動禁止タスクではない。つまり、タスクL及びタスクMは、実行順序が入れ替わる可能性がある。しかし、タスクNは、タスクL及びタスクMのどちらとも依存関係が存在する。従って、タスクL及びタスクMの実行順序に関わらず、タスクNは、2つのタスクの実行後に実行される。つまり、タスクNの最良実行順序は、静的タスクスケジューリング結果の実行順序と同じ(タスクMの直後)である。そのため、優先度制御部121は、タスクNを実行順序変動可能性なしと判断する。 Task N has a dependency relationship with task L and task M. Task L and task M are not order variation prohibition tasks. That is, there is a possibility that the execution order of the task L and the task M is switched. However, task N has a dependency relationship with both task L and task M. Therefore, regardless of the execution order of task L and task M, task N is executed after the execution of the two tasks. That is, the best execution order of task N is the same as the execution order of the static task scheduling result (immediately after task M). Therefore, the priority control unit 121 determines that the task N is not likely to change the execution order.
 判断後、優先度制御部121は、タスクNに優先度を付与する。優先度制御部121は、タスクNを、実行順序変動可能性なしと判断している。そのため、優先度制御部121は、タスクNの優先度として、先行するタスクより下げる処置は行わず、設定可能な優先度の中で最も高い優先度(今の場合「1」)を定義する(図30)。 After the determination, the priority control unit 121 gives priority to the task N. The priority control unit 121 determines that the task N has no possibility of changing the execution order. Therefore, the priority control unit 121 defines the highest priority (in this case, “1”) among the priorities that can be set as the priority of the task N without performing a process lower than the preceding task ( FIG. 30).
 本実施形態の優先度付与結果である図30と、第2の実施形態の優先度付与結果である図23を比較すると、本実施形態のタスクスケジューリング装置10は、優先度として、第2の実施形態の6個より少ない4個を使用している。 Comparing FIG. 30 showing the priority assignment result of the present embodiment and FIG. 23 showing the priority assignment result of the second embodiment, the task scheduling apparatus 10 of the present embodiment uses the second implementation as the priority. Four less than six of the forms are used.
 このように、本実施形態の係るタスクスケジューリング装置10は、使用する優先度の数を、第1乃至第3の実施形態のタスクスケジューリング装置10より削減する効果を得ることができる。 As described above, the task scheduling apparatus 10 according to the present embodiment can obtain an effect of reducing the number of priorities to be used from the task scheduling apparatus 10 according to the first to third embodiments.
 その理由は、本実施形態のタスクスケジューリング装置10は、タスクの実行順序の変動が外部に影響しないタスクについて、同じ優先度を用いるためである。 This is because the task scheduling apparatus 10 according to the present embodiment uses the same priority for a task whose task execution order does not affect the outside.
 (第5の実施形態)
 第5の実施形態について図面を参照して説明する。
(Fifth embodiment)
A fifth embodiment will be described with reference to the drawings.
 図31は、本実施形態に係るタスクスケジューリング装置10Aの構成の一例を示すブロック図である。図31において、図2と同様の構成には同様の番号を付し、その詳細な説明を省略する。 FIG. 31 is a block diagram showing an example of the configuration of the task scheduling apparatus 10A according to the present embodiment. In FIG. 31, the same components as those in FIG. 2 are denoted by the same reference numerals, and detailed description thereof is omitted.
 タスクスケジューリング装置10Aは、図2に示すタスクスケジューリング装置10が含む静的タスクスケジューリング生成部11と、優先度生成部12とに加え、装置制御部13を含む。 The task scheduling apparatus 10A includes an apparatus control unit 13 in addition to the static task scheduling generation unit 11 and the priority generation unit 12 included in the task scheduling apparatus 10 illustrated in FIG.
 装置制御部13は、静的タスクスケジューリング生成部11と優先度生成部12との動作を制御する。より具体的には、装置制御部13は、静的タスクスケジューリング生成部11に、タスクの静的タスクスケジューリングを実行させる。そして、装置制御部13は、優先度生成部12に、静的タスクスケジューリングしたタスクに優先度を付与させる。装置制御部13は、この動作を全てにタスクが終了するまで繰り返す。 The device control unit 13 controls the operations of the static task scheduling generation unit 11 and the priority generation unit 12. More specifically, the device control unit 13 causes the static task scheduling generation unit 11 to execute a static task scheduling of a task. Then, the device control unit 13 causes the priority generation unit 12 to assign a priority to the task subjected to the static task scheduling. The device control unit 13 repeats this operation until all tasks are completed.
 このような制御に基づき、装置制御部13は、静的タスクスケジューリング生成部11と優先度生成部12とを密に連携させ、最良実行順序の検出を容易にする。 Based on such control, the device control unit 13 closely links the static task scheduling generation unit 11 and the priority generation unit 12 to facilitate detection of the best execution order.
 なお、本実施形態のタスクスケジューリング装置10Aは、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで実現されても良い。 Note that the task scheduling apparatus 10A of this embodiment may be realized by a computer including a CPU 610, a ROM 620, and a RAM 630, similarly to the task scheduling apparatus 60 shown in FIG.
 本実施形態のタスクスケジューリング装置10Aの動作について図面を参照して説明する。 The operation of the task scheduling apparatus 10A of this embodiment will be described with reference to the drawings.
 図32は、本実施形態のタスクスケジューリング装置10Aの動作の一例を示すフローチャートである。 FIG. 32 is a flowchart showing an example of the operation of the task scheduling apparatus 10A of the present embodiment.
 まず、装置制御部13は、静的タスクスケジューリング生成部11に、処理対象のタスクについての静的タスクスケジューリングを指示する。静的タスクスケジューリング生成部11は、指定されたタスクのコア配置と、タスクのコア上での実行順序とを決定する静的タスクスケジューリングを実行する(ステップS501)。なお、静的タスクスケジューリングに用いる手法は、既に説明した実施形態の手法を用いれば良い。また、静的タスクスケジューリングを行ったタスクは、次に優先度生成部12で処理されるため、優先度付与対象タスクとなる。 First, the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for a task to be processed. The static task scheduling generation unit 11 executes static task scheduling for determining the core arrangement of the designated task and the execution order of the tasks on the core (step S501). Note that as the method used for the static task scheduling, the method of the embodiment described above may be used. In addition, since the task for which static task scheduling has been performed is processed next by the priority generation unit 12, it becomes a priority assignment target task.
 静的タスクスケジューリング生成部11の処理が終了すると、装置制御部13は、静的タスクスケジューリングが終了したタスクの優先度付与を、優先度生成部12に指示する。指示を受けた優先度生成部12は、静的タスクスケジューリングが終了した優先度付与対象タスクに優先度を付与する(ステップS502)。優先度生成部12が優先度付与に用いる手法は、既に説明した実施形態の手法を用いれば良い。なお、後ほど説明するが、優先度生成部12が優先度を付与する際、タスクスケジューリング装置10Aは、優先度付与対象タスクが最良実行順序(又は最悪実行順序)で静的タスクスケジューリングされているか否かを容易に判定できる。 When the processing of the static task scheduling generation unit 11 is completed, the device control unit 13 instructs the priority generation unit 12 to give priority to the task for which static task scheduling has been completed. Upon receiving the instruction, the priority generation unit 12 gives priority to the priority assignment target task for which static task scheduling has been completed (step S502). The method used by the priority generation unit 12 for assigning priority may be the method of the embodiment described above. As will be described later, when the priority generation unit 12 assigns priorities, the task scheduling apparatus 10A determines whether the prioritized tasks are statically scheduled in the best execution order (or worst execution order). Can be easily determined.
 優先度付与後、装置制御部13は、全てのタスクの処理が終了したか否かを判定する(ステップS503)。 After giving priority, the device control unit 13 determines whether or not all tasks have been processed (step S503).
 処理してないタスクがある場合(ステップS503 No)、装置制御部13は、ステップS501に戻り、次のタスクについて処理を繰り返す。 If there is a task that has not been processed (No in step S503), the apparatus control unit 13 returns to step S501 and repeats the process for the next task.
 終了した場合(ステップS503 Yes)、装置制御部13は、処理を終了する。 If completed (Yes in step S503), the apparatus control unit 13 ends the process.
 次に、図7に示した静的タスクスケジューリング結果と同様のタスクA乃至タスクFを用いて、本実施形態のタスクスケジューリング装置10Aの動作について、さらに説明する。 Next, the operation of the task scheduling apparatus 10A of the present embodiment will be further described using tasks A to F similar to the static task scheduling results shown in FIG.
 なお、静的タスクスケジューリングは、複数コアを統合して処理できる。本実施形態のタスクスケジューリング装置10Aは、静的タスクスケジューリングと優先度生成とを、複数コアを統合して処理しても良い。ただし、複数コアを統合した処理の場合、説明が煩雑となる。そのため、以下では、説明の明確にするため、コア0の動作として説明する。 Note that static task scheduling can be processed by integrating multiple cores. The task scheduling apparatus 10A according to the present embodiment may process static task scheduling and priority generation by integrating a plurality of cores. However, in the case of processing in which a plurality of cores are integrated, the description is complicated. Therefore, in the following, the operation of the core 0 will be described for clarity of explanation.
 また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時に複数のタスクが実行可能であった場合、優先度として付与された数値が小さいタスクが、優先して実行されるとする。なお、数値が小さいタスクの優先度が低いとする場合、数字の大小の判定を入れ替えれば良い。 Suppose that the priority of the task with a small numerical value is high. That is, when a plurality of tasks can be executed at the same time, it is assumed that a task with a small numerical value given as a priority is executed with priority. When the priority of a task with a small numerical value is low, the determination of the numerical value may be switched.
 また、以下の説明では、タスクが実行される順に優先度を設定するとし、最高優先度(優先度の数値の最小値)を「3」とする。 Also, in the following description, it is assumed that priorities are set in the order in which tasks are executed, and the highest priority (minimum value of priority values) is “3”.
 図33乃至図38は、本実施形態のタスクスケジューリング装置10Aが、設定する優先度を説明するための図である。図中の数値は、タスクに定義(設定、付与)された優先度である。 33 to 38 are diagrams for explaining the priorities set by the task scheduling apparatus 10A of the present embodiment. The numerical value in the figure is the priority defined (set, assigned) to the task.
 まず、装置制御部13は、静的タスクスケジューリング生成部11に最初のタスクの静的タスクスケジューリングを指示する。今の場合、静的タスクスケジューリング生成部11は、コア0上で最初にタスクAを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクAの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクAとなる。 First, the device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling of the first task. In this case, it is assumed that the static task scheduling generation unit 11 determines that the execution of the task A first on the core 0 is good for performance improvement. Therefore, the static task scheduling generation unit 11 performs static task scheduling for task A. The priority assignment target task is task A.
 また、静的タスクスケジューリングのときに、タスクAの後に実行可能であるタスクが、明らかになる。今の場合、実行可能となるタスクは、コア1からの依存が解消するタスクB、並びに、タスクAとの依存が解消するタスクC及びタスクDである。つまり、タスクスケジューリング装置10Aは、タスクB、タスクC及びタスクDの最良実行順序がタスクAの直後であることを知ることができる。以下、依存が解消され、配置が可能となったタスクを「配置可能タスク」と言う。 Also, tasks that can be executed after task A during the static task scheduling become clear. In this case, the tasks that can be executed are the task B from which the dependency from the core 1 is eliminated, and the task C and the task D from which the dependency from the task A is eliminated. That is, the task scheduling apparatus 10A can know that the best execution order of task B, task C, and task D is immediately after task A. Hereinafter, a task whose dependency is eliminated and placement is possible is referred to as a “placeable task”.
 その後、装置制御部13は、優先度生成部12に、タスクAの優先度の定義を指示する。タスクAは、先頭タスクである。そのため、優先度生成部12は、タスクAの優先度として、最高優先度(優先度の最小値)である「3」を設定(付与)する(図33)。 Thereafter, the device control unit 13 instructs the priority generation unit 12 to define the priority of the task A. Task A is the top task. Therefore, the priority generation unit 12 sets (gives) “3”, which is the highest priority (minimum value of priority), as the priority of task A (FIG. 33).
 装置制御部13は、まだタスクが残っているため、次のタスクを処理する。 The device control unit 13 processes the next task because there are still tasks remaining.
 装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクBを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクBの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクBとなる。 The device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task. Here, it is assumed that the static task scheduling generation unit 11 determines that the next task B on the core 0 is good for performance improvement. Therefore, the static task scheduling generation unit 11 performs static task scheduling for task B. Note that the priority assignment target task is task B.
 静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクB)の優先度の定義(付与)を指示する。 After the static task scheduling, the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task B).
 タスクAの静的タスクスケジューリング時に明らかなように、タスクBの最良実行順序は、タスクAの直後である。この実行順序は、上記の静的タスクスケジューリング結果の実行順序と同じである。このため、優先度生成部12は、タスクBを実行順序変動可能性なしと判断する。そして、優先度生成部12は、タスクBの優先度を、先行するタスクAより下げる処置は行わず、最高優先度(今の場合「3」)とする(図34)。なお、今回の場合、先行するタスクAの優先度が最高優先度のため、タスクBの優先度は、タスクAの優先度と同じである。 As is clear from the static task scheduling of task A, the best execution order of task B is immediately after task A. This execution order is the same as the execution order of the static task scheduling result. For this reason, the priority generation unit 12 determines that the task B has no possibility of changing the execution order. Then, the priority generation unit 12 sets the priority of the task B to the highest priority (in this case, “3”) without performing a process of lowering the priority of the task B from the preceding task A (FIG. 34). In this case, since the priority of the preceding task A is the highest priority, the priority of the task B is the same as the priority of the task A.
 装置制御部13は、まだタスクが残っているため、次のタスクを処理する。 The device control unit 13 processes the next task because there are still tasks remaining.
 装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクCを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクCの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクCとなる。 The device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task. Here, it is assumed that the static task scheduling generation unit 11 determines that the next task C execution on the core 0 is good for performance improvement. Therefore, the static task scheduling generator 11 performs static task scheduling for task C. The priority assignment target task is task C.
 静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクC)の優先度の定義(付与)を指示する。 After the static task scheduling, the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task C).
 タスクAの静的タスクスケジューリング時に明らかなように、タスクCの最良実行順序は、タスクAの直後である。タスクCは、優先度に基づき、タスクBと入れ替わる可能性がある。つまり、タスクCの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なる。このため、優先度生成部12は、タスクCを実行順序変動可能性ありと判断する。そして、優先度生成部12は、タスクCの優先度を、先行実行タスク(タスクB)の優先度(「3」)より低い優先度(例えば「4」)とする(図35)。 As is clear at the time of static task scheduling of task A, the best execution order of task C is immediately after task A. Task C may be replaced with task B based on priority. That is, the best execution order of task C is different from the execution order of the static task scheduling result. For this reason, the priority generation unit 12 determines that the task C may change the execution order. Then, the priority generation unit 12 sets the priority of the task C to a priority (for example, “4”) lower than the priority (“3”) of the preceding execution task (task B) (FIG. 35).
 装置制御部13は、まだタスクが残っているため、次のタスクを処理する。 The device control unit 13 processes the next task because there are still tasks remaining.
 装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクDを実行することが、性能向上に良いと判断したとする。(なお、この時点での配置可能タスクに残っているタスクは、タスクDである(図35を参照)。)そのため、静的タスクスケジューリング生成部11は、タスクDの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクDとなる。 The device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task. Here, it is assumed that the static task scheduling generation unit 11 determines that the next execution of the task D on the core 0 is good for performance improvement. (Note that the task remaining in the task that can be arranged at this time is task D (see FIG. 35).) Therefore, the static task scheduling generation unit 11 performs static task scheduling of task D. The priority assignment target task is task D.
 また、静的タスクスケジューリングのときに、タスクDの後に実行可能であるタスク(配置可能タスク)が、明らかになる。今の場合、配置可能タスクは、タスクDとの依存が解消するタスクE及びタスクFである。つまり、タスクスケジューリング装置10Aは、タスクE及びタスクFの最良実行順序がタスクDの直後であることを知ることができる。 Also, during static task scheduling, tasks that can be executed after task D (placeable tasks) become clear. In this case, the tasks that can be arranged are the task E and the task F whose dependency on the task D is eliminated. That is, the task scheduling apparatus 10A can know that the best execution order of the task E and the task F is immediately after the task D.
 静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクD)の優先度の定義(付与)を指示する。 After the static task scheduling, the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task D).
 タスクAの静的タスクスケジューリング時に明らかなように、タスクDの最良実行順序は、タスクAの直後である。タスクDは、優先度に基づき、タスクB及びタスクCと入れ替わる可能性がある。つまり、タスクDの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なる。このため、優先度生成部12は、タスクDを実行順序変動可能性ありと判断する。そして、優先度生成部12は、タスクDの優先度を、先行実行タスク(タスクB及びタスクC)の中の最も低い優先度(「4」)より低い優先度(例えば「5」)とする(図36)。 As is clear at the time of static task scheduling of task A, the best execution order of task D is immediately after task A. Task D may be replaced with Task B and Task C based on priority. That is, the best execution order of task D is different from the execution order of the static task scheduling result. For this reason, the priority generation unit 12 determines that the task D may change the execution order. Then, the priority generation unit 12 sets the priority of the task D to a priority (for example, “5”) lower than the lowest priority (“4”) among the preceding execution tasks (task B and task C). (FIG. 36).
 装置制御部13は、まだタスクが残っているため、次のタスクを処理する。 The device control unit 13 processes the next task because there are still tasks remaining.
 装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクEを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクEの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクEとなる。 The device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task. Here, it is assumed that the static task scheduling generation unit 11 determines that the next task E on the core 0 is good for performance improvement. Therefore, the static task scheduling generator 11 performs static task scheduling for task E. The priority assignment target task is task E.
 静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクE)の優先度の定義(付与)を指示する。 After the static task scheduling, the device control unit 13 instructs the priority generation unit 12 to define (assign) the priority of the priority assignment target task (task E).
 タスクDの静的タスクスケジューリング時に明らかなように、タスクEの最良実行順序は、タスクDの直後である。この実行順序は、上記の静的タスクスケジューリング結果の実行順序と同じである。このため、優先度生成部12は、タスクEを実行順序変動可能性なしと判断する。そして、優先度生成部12は、タスクEの優先度を、先行するタスクDより下げる処置は行わず、設定可能な最高の優先度(今の場合「3」)とする(図37)。 As is clear at the time of static task scheduling of task D, the best execution order of task E is immediately after task D. This execution order is the same as the execution order of the static task scheduling result. Therefore, the priority generation unit 12 determines that the task E has no possibility of changing the execution order. Then, the priority generation unit 12 sets the highest priority (in this case, “3”) that can be set without performing a process of lowering the priority of the task E over the preceding task D (FIG. 37).
 装置制御部13は、まだタスクが残っているため、次のタスクを処理する。 The device control unit 13 processes the next task because there are still tasks remaining.
 装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクFを実行することが、性能向上に良いと判断したとする。(なお、配置可能タスクの残りは、タスクFである(図37を参照)。)そのため、静的タスクスケジューリング生成部11は、タスクFの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクFとなる。 The device control unit 13 instructs the static task scheduling generation unit 11 to perform static task scheduling for the next task. Here, it is assumed that the static task scheduling generation unit 11 determines that the next execution of the task F on the core 0 is good for performance improvement. (The remaining task that can be arranged is task F (see FIG. 37).) Therefore, the static task scheduling generation unit 11 performs static task scheduling of task F. The priority assignment target task is task F.
 タスクDの静的タスクスケジューリング時に明らかなように、タスクFの最良実行順序は、タスクDの直後である。タスクFは、優先度に基づき、タスクEと入れ替わる可能性がある。つまり、タスクFの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なる。このため、優先度生成部12は、タスクFを実行順序変動可能性ありと判断する。そして、優先度生成部12は、タスクFの優先度として、先行実行タスク(タスクE)の中の最も低い優先度(「3」)より低い優先度(例えば「4」)とする(図38)。  As is clear from the static task scheduling of task D, the best execution order of task F is immediately after task D. Task F may replace task E based on priority. That is, the best execution order of task F is different from the execution order of the static task scheduling result. For this reason, the priority generation unit 12 determines that the task F may be changed in execution order. Then, the priority generation unit 12 sets the priority of the task F as a priority (for example, “4”) lower than the lowest priority (“3”) in the preceding execution task (task E) (FIG. 38). ). *
 なお、ここまでの説明において、装置制御部13が、静的タスクスケジューリング生成部11と優先度生成部12を、密に連携させることに基づき、タスクスケジューリング装置10Aは、最良実行順序の検出を容易とした。しかし、本実施形態のタスクスケジューリング装置10Aが最良実行順序を検出する手法は、これに限らない。 In the description so far, based on the fact that the device control unit 13 closely links the static task scheduling generation unit 11 and the priority generation unit 12, the task scheduling device 10A can easily detect the best execution order. It was. However, the method for detecting the best execution order by the task scheduling apparatus 10A of the present embodiment is not limited to this.
 例えば、予め、実行順序が変わり得る箇所について符号を設定することが想定できる。この設定として、静的タスクスケジューリング生成部11が、最良実行順序で静的タスクスケジューリングされたか否かを示す符号を付与しても良い。このような構成を用いると、本実施形態のタスクスケジューリング装置10Aは、静的タスクスケジューリング生成部11と優先度生成部12との動作を分離して、図31を用いて説明した構成と同様の効果を得ることができる。 For example, it can be assumed that signs are set in advance for locations where the execution order can change. As this setting, the static task scheduling generation unit 11 may assign a code indicating whether or not the static task scheduling is performed in the best execution order. When such a configuration is used, the task scheduling apparatus 10A of the present embodiment separates the operations of the static task scheduling generation unit 11 and the priority generation unit 12 and has the same configuration as described with reference to FIG. An effect can be obtained.
 このように、第5の実施形態のタスクスケジューリング装置10Aは、既に説明した構成に限らず様々な変形が可能である。 As described above, the task scheduling apparatus 10A of the fifth embodiment is not limited to the configuration described above, and various modifications are possible.
 このように、本実施形態のタスクスケジューリング装置10Aは、第1乃至第4の実施形態の効果に加え、最良実行順序の検出を容易にする効果を得ることができる。 Thus, in addition to the effects of the first to fourth embodiments, the task scheduling apparatus 10A of the present embodiment can obtain the effect of facilitating detection of the best execution order.
 その理由は、本実施形態のタスクスケジューリング装置10Aは、装置制御部13を含み、静的タスクスケジューリング生成部11と優先度生成部12との連携を実現しているためである。 This is because the task scheduling apparatus 10A of the present embodiment includes the apparatus control unit 13 and realizes cooperation between the static task scheduling generation unit 11 and the priority generation unit 12.
 あるいは、本実施形態にタスクスケジューリング装置10Aは、実行順序が変わり得る箇所に符号を設定するためである。 Alternatively, in this embodiment, the task scheduling apparatus 10A sets a code at a place where the execution order can change.
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。 The present invention has been described above with reference to the embodiments, but the present invention is not limited to the above embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention.
 この出願は、2012年 8月13日に出願された日本出願特願2012-179495を基礎とする優先権を主張し、その開示の全てをここに取り込む。 This application claims priority based on Japanese Patent Application No. 2012-179495 filed on Aug. 13, 2012, the entire disclosure of which is incorporated herein.
 本発明は、静的タスクスケジューリングに基づく実行順序を維持した上で、実行順序の維持に必要な優先度の個数を削減するソフトウェア開発ツールに利用可能である。 The present invention can be used for a software development tool that reduces the number of priorities necessary for maintaining the execution order while maintaining the execution order based on static task scheduling.
 1 マルチコアシステム
 10 タスクスケジューリング装置
 10A タスクスケジューリング装置
 11 静的タスクスケジューリング生成部
 12 優先度生成部
 13 装置制御部
 20 コア部
 30 タスクメモリ
 60 タスクスケジューリング装置
 121 優先度制御部
 122 優先度付与対象タスク保持部
 123 優先度保持部
 610 CPU
 620 ROM
 630 RAM
 640 記憶装置
 650 IO
 660 入力機器
 670 表示機器
 700 記憶媒体
DESCRIPTION OF SYMBOLS 1 Multi-core system 10 Task scheduling apparatus 10A Task scheduling apparatus 11 Static task scheduling production | generation part 12 Priority production | generation part 13 Apparatus control part 20 Core part 30 Task memory 60 Task scheduling apparatus 121 Priority control part 122 Priority assignment target task holding part 123 priority holding unit 610 CPU
620 ROM
630 RAM
640 storage device 650 IO
660 Input device 670 Display device 700 Storage medium

Claims (8)

  1.  タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する静的タスクスケジューリング生成手段と、
     前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、
     又は、
     前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する、
     優先度生成手段とを含む
     タスクスケジューリング装置。
    Static that generates a static task scheduling result that statically determines task scheduling including a core arrangement indicating which of a plurality of cores a task is to be arranged on, and an execution order of the tasks on the core Task scheduling generation means;
    Look at the execution order of the static task scheduling results in the order in which the tasks are executed, and assume that the priority assignment task, which is a task that gives priority, is executed with priority over other tasks. The best execution order, which is the order in which execution can be started earlier, is compared with the execution order of the static task scheduling result, and if the execution order is different, the execution start time after execution in the best execution order In the priority assignment target task, a priority lower than all the tasks executed in advance by the execution start time in the execution order of the static task scheduling result of the priority assignment target task is given to the priority assignment target task, and the execution order is If there is no change, the lowest priority of all tasks preceding the priority assignment task after the execution start time when executed in the best execution order. The degree equal to or higher priority given to the priority degree allocating the target task,
    Or
    Looking at the execution order of the static task scheduling results from the back of the order in which the tasks are executed, it is assumed that other tasks are executed in preference to the priority assignment task that is a task for giving priority. If the execution order is different from the execution order of the static task scheduling result, the execution order when the execution is executed in the worst execution order is compared. Prioritize the task to be given priority and give it higher priority than all tasks to be executed following the execution end time in the execution order of the static task schedule results of the task to be given priority before the end time If the order does not change, the highest of all tasks following the priority assignment task before the execution end time when executed in the worst execution order The Sakido equal to or lower priority given to the priority degree allocating the target task,
    A task scheduling device including priority generation means;
  2.  前記優先度生成手段が、
     実行順序が変化しない場合に、最も低い優先度と同等以上の優先度として設定可能な最高優先度を付与する、
     又は、
     実行順序が変化しない場合に、最も高い優先度と同等以下の優先度として設定可能な最低優先度を付与する
     請求項1に記載のタスクスケジューリング装置。
    The priority generation means is
    When the execution order does not change, the highest priority that can be set as a priority equal to or higher than the lowest priority is given.
    Or
    The task scheduling apparatus according to claim 1, wherein when the execution order does not change, a lowest priority that can be set as a priority equal to or lower than the highest priority is assigned.
  3.  前記優先度生成手段が、
     前記最悪実行順序を求める際に、前記優先度付与対象タスクに後続するタスクに従属するタスクを検討対象から除外する
     請求項1又は2記載に記載のタスクスケジューリング装置。
    The priority generation means is
    The task scheduling apparatus according to claim 1, wherein when determining the worst execution order, a task subordinate to a task subsequent to the priority assignment target task is excluded from an examination target.
  4.  前記優先度生成手段が、
     優先度を設定する処理の制御する優先度制御手段と、
     前記優先度付与対象タスクがいずれのタスクであるかを示す情報を保持する優先度付与対象タスク保持手段と、
     各タスクに設定された優先度を保持する優先度保持手段部と
     をさらに含む
     請求項1乃至3のいずれか1項に記載のタスクスケジューリング装置。
    The priority generation means is
    Priority control means for controlling processing for setting priority;
    Priority assignment target task holding means for holding information indicating which task the priority assignment target task is;
    The task scheduling apparatus according to any one of claims 1 to 3, further comprising: a priority holding unit that holds the priority set for each task.
  5.  前記優先度生成手段が、
     実行順序の変動が外部へ影響するタスクである順序変動禁止タスクの実行順序が変動しない範囲で、実行順序の変動が外部に影響しない前記優先度付与対象タスクに、同一の優先度を用いる請求項1乃至4のいずれか1項に記載のタスクスケジューリング装置。
    The priority generation means is
    The same priority is used for the prioritization target tasks in which the change in the execution order does not affect the outside as long as the execution order of the order change prohibition task that is a task in which the change in the execution order affects the outside does not change. The task scheduling apparatus according to any one of 1 to 4.
  6.  前記静的タスクスケジューリング生成手段に1つタスクの静的タスクスケジューリングを行わせ、
     前記優先度生成手段に、前記静的タスクスケジューリングが行われたタスクを前記優先度付与対象タスクとして、優先度を付与させ、
     前記静的タスクスケジューリング生成手段及び前記優先度生成手段の動作を優先度付与対象の全てのタスクについて繰り返すように制御する
     装置制御手段を
     さらに含む請求項1乃至5のいずれか1項に記載のタスクスケジューリング装置。
    Causing the static task scheduling generation means to perform static task scheduling of one task;
    In the priority generation means, the task for which the static task scheduling has been performed is given a priority as the priority assignment target task,
    The task according to any one of claims 1 to 5, further comprising an apparatus control unit that controls the operations of the static task scheduling generation unit and the priority generation unit to be repeated for all tasks to be given priority. Scheduling device.
  7.  複数のコアを含むマルチコアの装置において、
     タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成し、
     前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、
     又は、
     前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する、
     タスクスケジューリング方法。
    In a multi-core device including a plurality of cores,
    Generating a static task scheduling result that statically determines task scheduling including a core arrangement indicating which of a plurality of cores a task is to be arranged and an execution order of the tasks on the core;
    Look at the execution order of the static task scheduling results in the order in which the tasks are executed, and assume that the priority assignment task, which is a task that gives priority, is executed with priority over other tasks. The best execution order, which is the order in which execution can be started earlier, is compared with the execution order of the static task scheduling result, and if the execution order is different, the execution start time after execution in the best execution order In the priority assignment target task, a priority lower than all the tasks executed in advance by the execution start time in the execution order of the static task scheduling result of the priority assignment target task is given to the priority assignment target task, and the execution order is If there is no change, the lowest priority of all tasks preceding the priority assignment task after the execution start time when executed in the best execution order. The degree equal to or higher priority given to the priority degree allocating the target task,
    Or
    Looking at the execution order of the static task scheduling results from the back of the order in which the tasks are executed, it is assumed that other tasks are executed in preference to the priority assignment task that is a task for giving priority. If the execution order is different from the execution order of the static task scheduling result, the execution order when the execution is executed in the worst execution order is compared. Prioritize the task to be given priority and give it higher priority than all tasks to be executed following the execution end time in the execution order of the static task schedule results of the task to be given priority before the end time If the order does not change, the highest of all tasks following the priority assignment task before the execution end time when executed in the worst execution order The Sakido equal to or lower priority given to the priority degree allocating the target task,
    Task scheduling method.
  8.  複数のコアを含むマルチコアの装置において、
     タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する処理と、
     前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する処理、
     又は、
     前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する処理とを、
     コンピュータに実行させるプログラム。
    In a multi-core device including a plurality of cores,
    A process of generating a static task scheduling result that statically determines task scheduling including a core arrangement indicating which of a plurality of cores a task is to be allocated to, and an execution order of the tasks on the core; ,
    Look at the execution order of the static task scheduling results in the order in which the tasks are executed, and assume that the priority assignment task, which is a task that gives priority, is executed with priority over other tasks. The best execution order, which is the order in which execution can be started earlier, is compared with the execution order of the static task scheduling result, and if the execution order is different, the execution start time after execution in the best execution order In the priority assignment target task, a priority lower than all the tasks executed in advance by the execution start time in the execution order of the static task scheduling result of the priority assignment target task is given to the priority assignment target task, and the execution order is If there is no change, the lowest priority of all tasks preceding the priority assignment task after the execution start time when executed in the best execution order. Treatment for imparting degrees equal to or higher priority on the priority grantees task,
    Or
    Looking at the execution order of the static task scheduling results from the back of the order in which the tasks are executed, it is assumed that other tasks are executed in preference to the priority assignment task that is a task for giving priority. If the execution order is different from the execution order of the static task scheduling result, the execution order when the execution is executed in the worst execution order is compared. Prioritize the task to be given priority and give it higher priority than all tasks to be executed following the execution end time in the execution order of the static task schedule results of the task to be given priority before the end time If the order does not change, the highest of all tasks following the priority assignment task before the execution end time when executed in the worst execution order And a process to be applied to said priority grantees tasks Sakido equal to or lower priority,
    A program to be executed by a computer.
PCT/JP2013/004623 2012-08-13 2013-07-31 Scheduling device and scheduling method WO2014027444A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014530463A JP6156379B2 (en) 2012-08-13 2013-07-31 Scheduling apparatus and scheduling method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012179495 2012-08-13
JP2012-179495 2012-08-13

Publications (1)

Publication Number Publication Date
WO2014027444A1 true WO2014027444A1 (en) 2014-02-20

Family

ID=50685498

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/004623 WO2014027444A1 (en) 2012-08-13 2013-07-31 Scheduling device and scheduling method

Country Status (2)

Country Link
JP (1) JP6156379B2 (en)
WO (1) WO2014027444A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016206817A (en) * 2015-04-20 2016-12-08 株式会社デンソー Electronic controller

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102252079B1 (en) * 2019-09-20 2021-05-13 인천대학교 산학협력단 Real-time analysis device for real-time system and operating method thereof
KR102497255B1 (en) * 2020-12-15 2023-02-06 현대오토에버 주식회사 System and method of linking core in muti-core environment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007140710A (en) * 2005-11-15 2007-06-07 Sony Computer Entertainment Inc Task allocation method and task allocation device
WO2010055719A1 (en) * 2008-11-14 2010-05-20 日本電気株式会社 Schedule deciding apparatus, parallel execution apparatus, schedule deciding method, and program
WO2012020478A1 (en) * 2010-08-10 2012-02-16 富士通株式会社 Scheduler, multi-core processor system, and scheduling method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007140710A (en) * 2005-11-15 2007-06-07 Sony Computer Entertainment Inc Task allocation method and task allocation device
WO2010055719A1 (en) * 2008-11-14 2010-05-20 日本電気株式会社 Schedule deciding apparatus, parallel execution apparatus, schedule deciding method, and program
WO2012020478A1 (en) * 2010-08-10 2012-02-16 富士通株式会社 Scheduler, multi-core processor system, and scheduling method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016206817A (en) * 2015-04-20 2016-12-08 株式会社デンソー Electronic controller

Also Published As

Publication number Publication date
JPWO2014027444A1 (en) 2016-07-25
JP6156379B2 (en) 2017-07-05

Similar Documents

Publication Publication Date Title
EP2176751B1 (en) Scheduling by growing and shrinking resource allocation
KR101626378B1 (en) Apparatus and Method for parallel processing in consideration of degree of parallelism
JP5934094B2 (en) Mapping across multiple processors of processing logic with data parallel threads
JP6241300B2 (en) Job scheduling apparatus, job scheduling method, and job scheduling program
JP4185103B2 (en) System and method for scheduling executable programs
US20030056091A1 (en) Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US20130346985A1 (en) Managing use of a field programmable gate array by multiple processes in an operating system
US20110310107A1 (en) Information processing apparatus, method for controlling information processing apparatus, and program
KR20200091789A (en) Platform for concurrent execution of gpu operations
CN112711478A (en) Task processing method, device, server and storage medium based on neural network
WO2016092856A1 (en) Information processing device, information processing system, task processing method, and storage medium for storing program
JP6156379B2 (en) Scheduling apparatus and scheduling method
CN103294449B (en) The pre-scheduling dissipating operation is recurred
EP3097492B1 (en) Method and apparatus for preventing bank conflict in memory
US8615762B2 (en) Multiprocessor system, multiple threads processing method and program
US20120137300A1 (en) Information Processor and Information Processing Method
JP7367365B2 (en) Task execution management device, task execution management method, and task execution management program
US9705985B1 (en) Systems and methods for cross protocol automatic sub-operation scheduling
KR101952221B1 (en) Efficient Multitasking GPU with Latency Minimization and Cache boosting
JP6753521B2 (en) Computational resource management equipment, computational resource management methods, and programs
US10475151B2 (en) Graphics engine resource management and allocation system
CN112130977A (en) Task scheduling method, device, equipment and medium
JP6322968B2 (en) Information processing apparatus, information processing method, and program
Nitu et al. An improved gpu mapreduce framework for data intensive applications
Schmidhuber et al. Towards the derivation of guidelines for the deployment of real-time tasks on a multicore processor

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: 13879448

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014530463

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: 13879448

Country of ref document: EP

Kind code of ref document: A1