WO2012066620A1 - 情報処理装置、情報処理プログラム、および情報処理方法 - Google Patents
情報処理装置、情報処理プログラム、および情報処理方法 Download PDFInfo
- Publication number
- WO2012066620A1 WO2012066620A1 PCT/JP2010/070317 JP2010070317W WO2012066620A1 WO 2012066620 A1 WO2012066620 A1 WO 2012066620A1 JP 2010070317 W JP2010070317 W JP 2010070317W WO 2012066620 A1 WO2012066620 A1 WO 2012066620A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- thread
- standby power
- execution
- time
- cpu
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
- G06F11/3062—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present invention relates to an information processing apparatus, an information processing program, and an information processing method for controlling execution of a thread.
- the first prior art has a problem that the power consumption increases when the standby power of a thread having a low priority among the plurality of threads is large. Further, in the second prior art, threads are switched at regular intervals, so that the caches in the CPU that temporarily store the execution information of each thread compete.
- execution information of the one thread is stored in the cache, but when one thread is switched to another thread, the execution of one thread in the cache is executed. Information is rewritten with execution information of other threads. Next, when the execution of one thread is switched from another thread, the execution information of the other thread in the cache must be rewritten with the execution information of the one thread, so that the execution performance deteriorates and the throughput decreases. There was a problem.
- An object of the present invention is to provide an information processing apparatus, an information processing program, and an information processing method capable of reducing power consumption without reducing the throughput in order to solve the above-described problems caused by the prior art. To do.
- an unexecuted first thread and an unexecuted second thread are detected, the detected execution time of the second thread and the detected unit time of the first thread
- the standby power of the first thread when the first thread is executed next to the second thread is calculated by multiplying by the standby power per hit, and the execution time of the first thread Is multiplied by the standby power per unit time of the second thread to calculate the standby power of the second thread when the second thread is executed next to the first thread.
- the calculated standby power of the first thread is compared with the calculated standby power of the second thread, and the execution order of the first thread and the second thread is determined based on the comparison result.
- Information processing equipment, information Processing program, and an information processing method is provided.
- the information processing apparatus According to the information processing apparatus, the information processing program, and the information processing method, there is an effect that the power consumption can be reduced without reducing the throughput.
- FIG. 3 is a functional block diagram of an information processing apparatus 300.
- FIG. It is explanatory drawing which shows the example in which the production
- FIG. 1 is an explanatory view showing an embodiment of the present invention.
- a description will be given by taking an unexecuted first thread and an unexecuted second thread as examples.
- the standby power is calculated for each combination of execution order, and the execution order is determined based on the calculation result.
- Standby power of the second thread first thread execution time [ms] ⁇ second thread standby power per unit time [mW / ms]
- the information processing apparatus compares the standby power of the first thread with the standby power of the second thread. If the standby power of the first thread is equal to or higher than the standby power of the second thread, the information processing apparatus determines the execution order from the first thread to the second thread. If the standby power of the first thread is less than the standby power of the second thread, the information processing apparatus determines the execution order from the second thread to the first thread.
- FIG. 2 is an explanatory diagram when an execution time limit is defined for the first thread.
- FIG. 2 illustrates an example in which an execution time limit is defined for the first thread and an execution time limit is not defined for the second thread.
- the execution time limit defined for the first thread indicates that the time from the generation time of the first thread to the execution time limit of the first thread is defined.
- the first thread is set when the execution order is the first thread next to the second thread. It is determined whether or not the execution deadline of the thread can be observed. That is, it is determined whether or not the following is true. D—the execution time of the first thread> the execution time of the second thread
- the information processing apparatus waits for each combination of execution order. And the execution order is determined. On the other hand, if d-execution time of the first thread ⁇ execution time of the second thread, the execution deadline of the first thread cannot be observed if the execution order is the second thread ⁇ the first thread, The information processing apparatus determines the execution order from the first thread to the second thread.
- a multi-core processor system will be described as an example of the information processing apparatus.
- the multi-core processor is a processor in which a plurality of cores are mounted. If a plurality of cores are mounted, a single processor having a plurality of cores may be used, or a processor group in which single core processors are arranged in parallel may be used.
- a processor group in which single-core processors are arranged in parallel will be described as an example.
- FIG. 3 is a block diagram illustrating hardware of the information processing apparatus.
- the information processing apparatus 300 includes a CPU # 0, a CPU # 1, and a shared memory 302.
- CPU # 0, CPU # 1, and shared memory 302 are connected to each other via a bus 301.
- CPU # 0 has a cache, a register, and a core.
- the CPU # 1 has a cache, a register, and a core.
- CPU # 0 executes OS 310 and controls the entire information processing apparatus.
- the OS 310 is a master OS, has a function of controlling which CPU the thread is assigned to, and executes the thread assigned to the CPU # 0.
- CPU # 1 executes the OS 311.
- the OS 311 is a slave OS and executes a thread assigned to the CPU # 1.
- the shared memory 302 includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash ROM, and the like.
- a flash ROM stores a boot program
- a ROM stores application software
- a RAM is used as a work area for CPU # 0 to CPU # 1.
- the program stored in the shared memory 302 is loaded on each CPU, thereby causing each CPU to execute a coded process.
- the shared memory 302 stores, for example, a thread table 400 and an allocation management table 500.
- FIG. 4 is an explanatory diagram showing an example of the thread table 400.
- the thread table 400 includes a thread identification information item 401, a priority item 402, a deadline item, an execution time item 404, and a standby power item 405.
- the thread identification information item 401 holds identification information of each thread.
- the priority item 402 holds information indicating whether the priority of each thread whose identification information is held in the thread identification information item 401 is high. When the priority is high, the high priority is held, and when the priority is not high, the low priority is held.
- the deadline item 403 holds the time from the generation time when the thread is generated to the execution deadline of the thread (herein referred to as “deadline”).
- the execution time item 404 holds the execution time of each thread whose identification information is held in the thread identification information item 401.
- the standby power item 405 a value of standby power per unit time of each thread whose identification information is stored in the thread identification information item 401 is stored.
- thread # 0 is a high priority thread and the deadline is 10 [ms].
- the execution time of the thread # 0 is 5 [ms], and the standby power per unit time is 100 [mW / ms].
- FIG. 5 is an explanatory diagram showing an example of the allocation management table 500.
- the allocation management table 500 includes a CPU identification information item 501, a LOCK item 502, an allocated thread identification information item 503, and an execution state item 504.
- the CPU identification information item 501 holds CPU identification information.
- the LOCK item 502 holds information indicating whether or not the CPU whose identification information is held in the CPU identification information item 501 is LOCKed. Whether or not LOCK is set indicates whether or not a high priority thread is assigned to the CPU. If no high-priority thread is assigned to the CPU, 0 is registered in the LOCK item 502, and if a high-priority thread is assigned to the CPU, 1 is registered in the LOCK item 502. .
- the identification information of the thread assigned to the CPU whose identification information is held in the CPU identification information item 501 is registered.
- the execution state item 504 registers the execution state of the thread whose identification information is registered in the identification information item 503 of the assigned thread. Either exe (execution) or proh (prohibit) is registered as the execution state. exe indicates that the thread is in an executable state, and proh indicates that the thread is in an execution prohibited state.
- each OS specifies that thread # 1 and thread # 3 are assigned to CPU # 0 and thread # 2 and thread # 4 are assigned to CPU # 1 by assignment management table 500 it can.
- each OS since the identification information of the allocated threads of each CPU is registered in the order of allocation, each OS specifies the allocation order by sequentially accessing the identification information of the allocated threads in the allocation management table 500. Can do.
- FIG. 6 is a functional block diagram of the information processing apparatus 300.
- the information processing apparatus 300 includes a detection unit 601, a difference calculation unit 602, a determination unit 603, a first calculation unit 604, a second calculation unit 605, a comparison unit 606, and a determination unit 607. is doing.
- CPU # 0 loads an information processing program stored in shared memory 302 and having functions of detection unit 601 to determination unit 607.
- the functions of the detection unit 601 to the determination unit 607 are realized by executing the processing coded in the information processing program loaded by the CPU # 0.
- the detecting unit 601 detects an unexecuted first thread and an unexecuted second thread.
- the first calculation unit 604 multiplies the execution time of the second thread detected by the detection unit 601 and the standby power per unit time of the first thread detected by the detection unit 601. Thereby, the first calculation unit 604 calculates standby power of the first thread when the first thread is executed next to the second thread.
- the second calculation unit 605 multiplies the execution time of the first thread by the standby power per unit time of the second thread.
- the standby power of the second thread is calculated.
- the comparison unit 606 compares the standby power of the first thread calculated by the first calculation unit 604 with the standby power of the second thread calculated by the second calculation unit 605.
- the comparison unit 607 determines the execution order of the first thread and the second thread based on the comparison result compared by the comparison unit 606.
- the determination unit 607 sets the execution order to the second thread next to the first thread. To do.
- the determination unit 607 changes the execution order to the first thread next to the second thread. To do.
- the difference calculation unit 602 includes the time from the generation time of the first thread to the execution time limit, the execution time of the first thread, The difference time is calculated.
- the determination unit 603 determines whether or not the difference time calculated by the difference calculation unit 602 is greater than the execution time of the second thread.
- the first calculation unit 604 determines the execution time of the second thread and the standby power per unit time of the first thread.
- the standby power of the first thread is calculated by multiplying.
- the second calculation unit 605 determines the execution time of the first thread and the standby power per unit time of the second thread.
- the standby power of the second thread is calculated by multiplying.
- the determination unit 607 sets the execution order to the second thread next to the first thread.
- the execution order is determined for each CPU to which the high priority is not assigned, and the high priority thread (target thread) generated is assigned to the CPU that can reduce the standby power most.
- the OS 310 selects an arbitrary CPU (target CPU) among CPUs to which no high priority thread is assigned. Then, the OS 310 identifies assigned threads assigned to the target CPU. Next, the OS 310 calculates the following formulas, respectively.
- N is the number of assigned threads, and numbers 1 to n are assigned to the assigned threads in the order of assignment.
- p1 to pn are standby powers of assigned threads. Therefore, (p1 + p2 +... Pn) is a total value of standby power per unit time of the assigned thread.
- the OS 310 determines whether or not to comply with the following formula. R0> (t1 ⁇ t2 ⁇ ... ⁇ tn) ⁇ pst_high ⁇ pst_low (1)
- ⁇ is a logical product, and ⁇ is a logical sum.
- t1 to tn are execution times of assigned threads.
- the OS 310 selects a thread having the largest standby power per unit time as a thread to be executed before the target thread among the assigned threads satisfying r0> (t1 ⁇ t2 ⁇ ... ⁇ tn). .
- the first assigned thread among the assigned threads is selected as a thread (previous thread) to be executed before the target thread.
- the OS 310 calculates (a) the following formula.
- Ptotal ptotal + t1 ⁇ p0 (2)
- Pst_high pst_high ⁇ t1 ⁇ p0 (3)
- Pst_low pst_low ⁇ t1 ⁇ p0 Formula (4)
- R0 r0 ⁇ t1 Formula (5)
- the OS 310 determines whether or not (b) the following formula is observed. Pst_high ⁇ pst_low (6)
- the OS 310 determines that (b) the above equation (6) is observed, the thread having the largest standby power per unit time among the assigned threads satisfying r0> (t2 ⁇ ... ⁇ tn). Is selected as a thread to be executed after the preceding thread and before the target thread.
- the OS 310 then repeats the processes (a) to (b) to determine the execution order when assigned to the target CPU.
- the OS 310 selects an unselected CPU as the target CPU among the CPUs to which no high priority thread is assigned. Then, the OS 310 determines the execution order when the target thread is assigned to the selected target CPU.
- the CPU having the largest ptotal calculated for each CPU is determined as the assignment destination CPU of the target thread. Then, the determined execution order is notified to the assignment destination CPU, and the thread assigned to the assignment destination CPU is executed based on the notified execution order.
- FIG. 7 is an explanatory diagram showing an example in which the generation of thread # 0 is detected.
- the OS 310 determines whether or not the priority of the thread # 0 is high using the thread table 400 based on the identification information of the thread # 0. Here, it is determined that the priority of thread # 0 is high.
- the OS 310 identifies (2) a CPU to which a high priority thread is not allocated among the multi-core processors based on the allocation management table 500.
- CPU # 0 and CPU # 1 are specified.
- the OS 310 selects CPU # 0 as the target CPU from among CPU # 0 and CPU # 1.
- the OS 310 assigns each calculated value to the above equation (1) and determines whether or not the above equation (1) is observed. 5 [ms] (r0 (CPU # 0))> (3 [ms] (execution time of thread # 1) ⁇ 2 [ms] (execution time of thread # 3)) ⁇ 500 [mW] (pst_high (CPU # 0)) ⁇ 900 [ms] (pst_low (CPU # 0))
- the OS 310 calculates the above formulas (2) to (6).
- the OS 310 determines whether to comply with the above formula (6). ⁇ 200 [mW] ⁇ 600 [mW]
- the OS 310 determines that the above equation (6) is observed, and among the assigned threads satisfying r0 (CPU # 0)> (execution time of thread # 3), the thread having the largest standby power per unit time Is selected as a thread to be executed after the preceding thread and before the target thread. Then, the selection result is added to the execution order information of CPU # 0 described above.
- CPU # 0 execution order information thread # 1 ⁇ thread # 3
- the OS 310 calculates the above equation (2).
- the OS 310 selects CPU # 1 as the target CPU from among CPU # 0 and CPU # 1.
- the OS 310 assigns each calculated value to the above equation (1) and determines whether or not the above equation (1) is observed. 5 [ms] (r0 (CPU # 1))> (4 [ms] (execution time of thread # 2) ⁇ 5 [ms] (execution time of thread # 4)) ⁇ 500 [mW] (pst_high (CPU # 1)) ⁇ 600 [ms] (pst_low (CPU # 1))
- the OS 310 calculates the above equation (2).
- the OS 310 determines a CPU having a large total of CPU # 0 and CPU # 1 as an assignment destination CPU of the thread # 0.
- ptotal (CPU # 0) is 500 [mW]
- ptotal (CPU # 1) is 400 [mW]
- CPU # 0 is determined as the allocation CPU of thread # 0.
- FIG. 8 is an explanatory diagram showing an example of updating the allocation management table 500.
- the OS 310 registers the identification information of the CPU in the allocation management table 500 in the CPU # 0 and the identification information of the thread # 0 in the allocated thread identification information item 503.
- the OS 310 sets exe in the execution state item 504 of the thread # 1, sets proh in the execution state item 504 of the thread # 3, and sets proh in the execution state item 504 of the thread # 0. Then, the OS 310 starts executing the thread # 1.
- step S901 determines whether or not the generation of a thread has been detected.
- step S901 determines whether the generation of a thread has been detected.
- step S901: Yes determines whether the generated thread (target thread) is a high priority thread.
- step S902 determines that the target thread is a high priority thread (step S902: Yes)
- it identifies a CPU that is not locked with respect to the assignment of the high priority thread (step S903). Then, the OS 310 determines whether or not the CPU that is not locked with respect to the assignment of the high priority thread has been identified (step S904).
- step S904 determines that a CPU that is not locked with respect to the assignment of the high priority thread has been identified (step S904: Yes), it is determined whether there is an unselected CPU among the CPUs that are not locked. (Step S905).
- step S905 When the OS 310 determines that there is an unselected CPU (step S905: Yes), an arbitrary CPU is selected from the unselected CPUs as the target CPU (step S906). Then, the OS 310 executes execution order determination processing (step S907), outputs the target CPU identification information, execution order information, and ptotal in association with each other (step S908), and returns to step S905.
- step S902 determines that the target thread is not a high priority thread (step S902: No)
- the CPU with the minimum load is specified (step S909).
- the OS 310 sets the CPU to which the target thread is assigned as the specified minimum load CPU (step S910), and the process returns to step S901.
- step S904 determines whether there is an unselected CPU (step S911). If the OS 310 determines that there is an unselected CPU (step S911: Yes), an arbitrary CPU is selected from the unselected CPUs (step S912).
- the OS 310 extracts threads registered in the execution order information of the selected CPU (step S913), and calculates the total execution time of the extracted threads (step S914).
- the OS 310 determines whether or not the total value of the extracted thread execution times ⁇ the target thread deadline (d0) ⁇ the target thread execution time (t0) (step S915).
- step S915: Yes If the OS 310 determines that the total execution time of the extracted threads is less than d0 ⁇ t0 (step S915: Yes), the target CPU is determined as a CPU that can comply with d0 (step S916), and the process proceeds to step S911. Return. On the other hand, if it is determined that the total execution time of the extracted threads is not less than d0 ⁇ t0 (step S915: No), the process returns to step S911.
- step S911 determines whether there is no unselected CPU (step S911: No)
- step S917 determines whether there is a CPU that can comply with d0
- step S917 determines whether there is an unselected CPU among CPUs that can comply with d0 (step S918).
- step S918 When the OS 310 determines that there is an unselected CPU among CPUs that can comply with d0 (step S918: Yes), an arbitrary CPU is selected from the unselected CPUs as a target CPU (step S919). Then, the OS 310 executes execution order determination processing (step S920), outputs the target CPU identification information, execution order information, and ptotal in association with each other (step S921), and returns to step S905.
- step S918 when the OS 310 determines that there is no unselected CPU among the CPUs that can comply with d0 (step S918: No), the CPU with the largest ptotal value among the CPUs that can comply with d0. Specify (step S922). Then, the OS 310 notifies the identified CPU of the execution order information of the identified CPU (step S923), sets the assignment destination CPU of the target thread to the identified CPU (step S924), and returns to step S901.
- step S917 When the OS 310 determines that there is no CPU that can comply with d0 (step S917: No), it identifies the thread with the shortest execution time among the high priority threads assigned to each CPU (step S925). Next, the OS 310 sets the specified thread allocation destination CPU as the target thread allocation destination CPU (step S926), and notifies the target thread allocation destination CPU of the execution order information discard instruction (step S927). Return to S901.
- step S905 when the OS 310 determines that there is no unselected CPU (step S905: No), the CPU having the largest ptotal value among the unlocked CPUs is specified (step S928). Then, the OS 310 notifies the identified CPU of the execution order information of the identified CPU (step S929), sets the assignment destination CPU of the target thread to the identified CPU (step S930), and returns to step S901.
- step S907 the execution order determination process is step S907 or step S920
- the execution subject is the OS 310
- the execution order determination process is the process of step S1511 (FIG. 15)
- the execution subject is each OS.
- pst_high r0 ⁇ standby power per unit time (p0) of the target thread. (Step S1202).
- the OS specifies a thread whose execution time is shorter than r0 among the specified assigned threads (step S1206). Then, it is determined whether or not the OS has identified a thread whose execution time is shorter than r0 (step S1207).
- step S1207 When the OS determines that a thread having an execution time shorter than r0 has been identified (step S1207: Yes), the total value (psum) of the standby power of the allocated thread is calculated (step S1208).
- step S1210 determines whether there is an unselected thread among threads whose execution time is shorter than r0 (step S1211).
- step S1211 determines that there is an unselected thread
- step S1212 the unselected thread having the largest standby power per unit time is selected (step S1212).
- the OS associates the identification information of the selected thread and the value of m, and outputs them in the execution order information (step S1213).
- step S1207 when the OS determines that a thread having an execution time shorter than r0 could not be identified (step S1207: No), the identification information of the target thread is associated with the value of m and output to the execution order information (Ste S1218) and the process proceeds to Step S908.
- step S1210 If it is determined in step S1210 that the OS does not satisfy pst_high> pst_low (step S1210: No), the process proceeds to step S1218.
- step S1211 when the OS determines that there is no unselected thread (step S1211: No), the process proceeds to step S1218.
- FIG. 14 is a flowchart showing an information processing procedure at the time of thread allocation by each OS.
- the OS receives a notification of execution order information, receives an instruction to discard execution order information, or determines whether or not a thread assignment has been detected (step S1401).
- the OS receives the notification of the execution order information, receives the instruction to discard the execution order information, and determines that the thread assignment is not detected (step S1401: No)
- the process returns to step S1401.
- step S1401 notification of execution order information
- step S1402 the stored execution order information is discarded and the received execution order information is stored (step S1402).
- step S1401 thread assignment
- step S1403 determines whether the thread that has detected the assignment is a high priority thread.
- step S1403 Yes
- step S1405 the OS sets the execution state of the first thread in the execution order information to exe (step S1405), and sets the execution state of the allocated thread excluding the first thread in the execution order information to proh (step S1406).
- step S1407 the OS starts execution of the first thread in the execution order information (step S1407), and returns to step S1401.
- step S1403 when the OS determines that the thread that detected the assignment is not a high priority thread (step S1403: No), the OS determines whether or not a lock relating to the assignment of the high priority thread is applied (step S1408). . When the OS determines that the lock relating to the assignment of the high priority thread is applied (step S1408: Yes), it is determined whether the thread that detected the assignment is the first thread in the execution order information (step S1409). ).
- step S1409: No If the OS determines that the thread whose allocation is detected is not the first thread in the execution order information (step S1409: No), the execution state of the detected thread is set to proh (step S1410), and the process returns to step S1401. .
- step S1409: Yes When the OS determines that the thread that detected the allocation instruction is the first thread in the execution order information (step S1409: Yes), the execution state of the detected thread is set to exe (step S1411), and the process returns to step S1401. .
- step S1408 when the OS determines that the lock relating to the assignment of the high priority thread is not applied (step S1408: No), the thread detected at the end of the run queue is registered (step S1412), and the process returns to step S1401. .
- step S1401 If it is determined in step S1401 that the OS has received a notification of an instruction to discard execution order information (step S1401: notification of an instruction to discard execution order information), the stored execution order information is discarded (step S1413). Then, the OS starts executing the thread assigned first among the assigned high priority threads (step S1414), and returns to step S1401.
- FIG. 15 is a flowchart showing an information processing procedure at the time of thread termination by each OS. First, it is determined whether or not the OS detects the end of a thread or the switching of a thread (step S1501). If the OS determines that the end of the thread or the switching of the thread is not detected (step S1501: No), the process returns to step S1501.
- step S1501 end of thread
- step S1502 determines whether the ended thread is a high priority thread
- step S1503 determines whether or not a lock relating to the assignment of the high priority thread is applied.
- step S1503: Yes When the OS determines that the lock relating to the assignment of the high priority thread is applied (step S1503: Yes), the process proceeds to step S1509. When the OS determines that the lock relating to the assignment of the high priority thread is not applied (step S1503: No), the process proceeds to step S1505.
- step S1502 determines whether there is a high-priority thread other than the terminated thread among the allocated threads.
- Step S1504 determines whether there is no high priority thread other than the terminated threads among the assigned threads.
- step S1506 the OS sets the execution state of all the allocated threads to exe (step S1506), and starts the execution of the thread with the highest allocation among the allocated threads (step S1507), and step S1501. Return to.
- step S1504 when the OS determines that there is a high-priority thread among the allocated threads except for the terminated thread (step S1504: Yes), there is an unexecuted thread in the execution order information. Whether or not (step S1508).
- step S1508: Yes When the OS determines that there is an unexecuted thread in the execution order information (step S1508: Yes), the execution state of the first thread among the unexecuted threads in the execution order information is set to exe (step S1509). ).
- the OS starts execution of the first thread (step S1510) and returns to step S1501.
- the OS determines that there is no unexecuted thread in the execution order information (step S1508: No)
- the execution order determination process is executed (step S1511), and the process returns to step S1501.
- the execution order is determined by comparing the standby power of each thread. To do. As a result, low power consumption can be achieved without switching threads.
- the second thread is executed next to the first thread. Therefore, a thread with large standby power can be executed first, and power consumption can be reduced.
- the standby power of the first thread is less than the standby power of the second thread, the first thread is executed next to the second thread. Thereby, a thread with large standby power can be executed first, and power consumption can be reduced.
- an execution time limit is defined for the first thread. It is determined whether or not the first thread can comply with the execution time limit even if the second thread is executed before the first thread.
- the standby power of the first thread and the standby power of the second thread are determined. The execution order is determined based on the above. As a result, power consumption can be reduced even when a thread with an execution deadline is executed.
- the execution order is set to the second thread next to the first thread.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Power Sources (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
第2のスレッドの実行時間と第1のスレッドの単位時間当たりの待機電力とを乗算することにより、第2のスレッドのつぎに第1のスレッドが実行された場合の第1のスレッドの待機電力を算出する。そして、第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、第1のスレッドのつぎに第2のスレッドが実行された場合の第2のスレッドの待機電力を算出する。第1のスレッドの待機電力と第2のスレッドの待機電力とを比較し、比較結果に基づいて第1のスレッドと第2のスレッドとの実行順を決定する。
Description
本発明は、スレッドの実行を制御する情報処理装置、情報処理プログラム、および情報処理方法に関する。
従来、シングルコアプロセッサシステムやマルチコアプロセッサシステムの各CPUにおいて、複数のスレッドが割り当てられた場合、たとえば、スレッドごとに定義された優先度により実行順を決定する技術(第1の従来技術)が知られている(たとえば、下記特許文献1を参照。)。
また、複数のスレッドが割り当てられた場合、ラウンドロビン方式を用いて複数のスレッドの各スレッドを一定時間ずつ順に実行する技術(第2の従来技術)が知られている(たとえば、下記特許文献2と下記非特許文献1とを参照。)。
C.L.Liu,James W.LAYLAND,「Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment」Journal of the Association for Computing Machinery,Vol.20,No.1,January 1973
しかしながら、第1の従来技術では、複数のスレッドのうちの優先度が低いスレッドの待機電力が大きい場合、消費電力が増加する問題点があった。また、第2の従来技術では、一定時間ごとにスレッドが切り替わるため、各スレッドの実行情報を一時的に格納するCPU内のキャッシュが競合してしまう。
たとえば、CPUで一のスレッドの実行中には該一のスレッドの実行情報がキャッシュ上に格納されるが、一のスレッドから他のスレッドの実行に切り替わると、該キャッシュ内の一のスレッドの実行情報が他のスレッドの実行情報に書き換えられる。つぎに、他のスレッドから一のスレッドの実行に切り替わると、該キャッシュ内の他のスレッドの実行情報を一のスレッドの実行情報に書き換えなければならず、実行の性能が劣化し、スループットが下がる問題点があった。
本発明は、上述した従来技術による問題点を解消するため、スループットを下げることなく、低消費電力化を図ることができる情報処理装置、情報処理プログラム、および情報処理方法を提供することを目的とする。
本発明の一観点によれば、未実行の第1のスレッドと未実行の第2のスレッドとを検出し、検出された第2のスレッドの実行時間と検出された第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出し、前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出し、算出された第1のスレッドの待機電力と算出された第2のスレッドの待機電力とを比較し、比較結果に基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する情報処理装置、情報処理プログラム、および情報処理方法が提供される。
本情報処理装置、情報処理プログラム、および情報処理方法によれば、スループットを下げることなく、低消費電力化を図ることができるという効果を奏する。
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理プログラム、および情報処理方法の好適な実施の形態を詳細に説明する。
図1は、本発明の一実施例を示す説明図である。ここでは、未実行の第1のスレッドと未実行の第2のスレッドとを例に挙げて説明する。図1では、第1のスレッドと第2のスレッドの実行前に、実行順の組み合わせごとに待機電力がどのくらいかかるかを算出し、算出結果に基づいて実行順を決定する。
まず、(1)実行順が第2のスレッド→第1のスレッドの順の場合、第2のスレッドの実行中には第1のスレッドは待機状態となる。よって、第1のスレッドの待機電力は下記となる。
・第1のスレッドの待機電力=第2のスレッドの実行時間[ms]×第1のスレッドの単位時間当たりの待機電力[mW/ms]
・第1のスレッドの待機電力=第2のスレッドの実行時間[ms]×第1のスレッドの単位時間当たりの待機電力[mW/ms]
つぎに、(2)実行順が第1のスレッド→第2のスレッドの順の場合、第1のスレッドの実行中には第2のスレッドは待機状態となる。よって、第2のスレッドの待機電力は下記となる。
・第2のスレッドの待機電力=第1のスレッドの実行時間[ms]×第2のスレッドの単位時間当たりの待機電力[mW/ms]
・第2のスレッドの待機電力=第1のスレッドの実行時間[ms]×第2のスレッドの単位時間当たりの待機電力[mW/ms]
そして、情報処理装置が、第1のスレッドの待機電力と第2のスレッドの待機電力とを比較する。第1のスレッドの待機電力が第2のスレッドの待機電力以上であれば、情報処理装置が、実行順を第1のスレッド→第2のスレッドに決定する。第1のスレッドの待機電力が第2のスレッドの待機電力未満であれば、情報処理装置が、実行順を第2のスレッド→第1のスレッドに決定する。
図2は、第1のスレッドに実行期限が定義されている場合の説明図である。図2では第1のスレッドに実行期限が定義され、第2のスレッドに実行期限が定義されていない例について説明する。ここで、第1のスレッドに実行期限が定義されているとは、第1のスレッドの生成時刻から第1のスレッドの実行期限までの時間が定義されていることを示す。
第1のスレッドの生成時刻から第1のスレッドの実行期限までの時間(d)が定義されている場合には、実行順を第2のスレッドのつぎに第1のスレッドとした場合に第1のスレッドの実行期限を遵守できるか否かを判断する。すなわち、下記となるか否かが判断される。
・d-第1のスレッドの実行時間>第2のスレッドの実行時間
・d-第1のスレッドの実行時間>第2のスレッドの実行時間
図2のようにd-第1のスレッドの実行時間>第2のスレッドの実行時間であれば、図1で上述したように、情報処理装置が実行順の組み合わせごとに待機するスレッドの待機時間を算出し、実行順を決定する。一方、d-第1のスレッドの実行時間≦第2のスレッドの実行時間の場合、実行順が第2のスレッド→第1のスレッドであると、第1のスレッドの実行期限を遵守できないため、情報処理装置が実行順を第1のスレッド→第2のスレッドに決定する。
本実施の形態では情報処理装置の一例としてマルチコアプロセッサシステムを挙げて説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(情報処理装置のハードウェア)
図3は、情報処理装置のハードウェアを示すブロック図である。図3において、情報処理装置300は、CPU#0と、CPU#1と、共有メモリ302と、を有している。CPU#0と、CPU#1と、共有メモリ302とは、それぞれバス301を介して接続されている。
図3は、情報処理装置のハードウェアを示すブロック図である。図3において、情報処理装置300は、CPU#0と、CPU#1と、共有メモリ302と、を有している。CPU#0と、CPU#1と、共有メモリ302とは、それぞれバス301を介して接続されている。
CPU#0は、キャッシュと、レジスタと、コアと、を有している。CPU#1は、キャッシュと、レジスタと、コアと、を有している。CPU#0はOS310を実行し、情報処理装置の全体の制御を司る。OS310はマスタOSであり、スレッドをどのCPUに割り当てるかを制御する機能を有し、該CPU#0に割り当てられたスレッドを実行する。CPU#1はOS311を実行する。OS311はスレーブOSであり、CPU#1に割り当てられたスレッドを実行する。
共有メモリ302は、具体的には、たとえば、ROM(Read Only Memory)と、RAM(Random Access Memory)と、フラッシュROMなどを有している。たとえば、フラッシュROMがブートプログラムを記憶し、ROMがアプリケーションソフトウェアを記憶し、RAMがCPU#0~CPU#1のワークエリアとして使用される。共有メモリ302に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることとなる。共有メモリ302は、たとえば、スレッドテーブル400と、割当管理テーブル500と、を記憶している。
図4は、スレッドテーブル400の一例を示す説明図である。スレッドテーブル400は、スレッドの識別情報の項目401と、優先度の項目402と、デッドラインの項目と、実行時間の項目404と、待機電力の項目405と、を有している。スレッドの識別情報の項目401には、各スレッドの識別情報が保持されている。優先度の項目402には、スレッドの識別情報の項目401に識別情報が保持されている各スレッドの優先度が高いか否かを示す情報が保持されている。優先度が高い場合、高優先が保持され、優先度が高くない場合、低優先が保持されている。
デッドラインの項目403には、スレッドが生成された生成時刻から該スレッドの実行期限までの時間(ここでは、「デッドライン」と称する。)が保持されている。実行時間の項目404には、スレッドの識別情報の項目401に識別情報が保持されている各スレッドの実行時間が保持されている。待機電力の項目405には、スレッドの識別情報の項目401に識別情報が保持されている各スレッドの単位時間あたりの待機電力の値が保持されている。
スレッド#0を例に挙げると、スレッド#0は高優先度のスレッドであり、デッドラインが10[ms]である。スレッド#0の実行時間が5[ms]であり、単位時間あたりの待機電力が100[mW/ms]である。
図5は、割当管理テーブル500の一例を示す説明図である。割当管理テーブル500は、CPUの識別情報の項目501と、LOCKの項目502と、割当済スレッドの識別情報の項目503と、実行状態の項目504と、を有している。CPUの識別情報の項目501には、CPUの識別情報が保持されている。
LOCKの項目502には、CPUの識別情報の項目501に識別情報が保持されているCPUがLOCKされているか否かを示す情報が保持されている。LOCKされているか否かとは、CPUに高優先度のスレッドが割り当てられているか否かを示す。CPUに高優先度のスレッドが割り当てられていなければ、LOCKの項目502には0が登録され、CPUに高優先度のスレッドが割り当てられていれば、LOCKの項目502には1が登録される。
割当済スレッドの識別情報の項目503には、CPUの識別情報の項目501に識別情報が保持されているCPUに割り当てられたスレッドの識別情報が登録される。実行状態の項目504とは、割当済スレッドの識別情報の項目503に識別情報が登録されたスレッドの実行状態が登録される。実行状態としてはexe(execution)またはproh(prohibit)のいずれかが登録される。exeはスレッドが実行可能な状態であることを示し、prohはスレッドが実行禁止状態であることを示す。
ここで、各OSは、割当管理テーブル500によりCPU#0にはスレッド#1とスレッド#3とが割り当てられ、CPU#1にはスレッド#2とスレッド#4とが割り当てられていることを特定できる。また、各CPUの割当済スレッドの識別情報は割り当てられた順に登録されているため、各OSは割当管理テーブル500内の割当済スレッドの識別情報を順にアクセスすることで、割当順を特定することができる。
(情報処理装置300の機能ブロック図)
図6は、情報処理装置300の機能ブロック図である。情報処理装置300は、検出部601と、差分算出部602と、判断部603と、第1の算出部604と、第2の算出部605と、比較部606と、決定部607と、を有している。具体的には、たとえば、共有メモリ302に記憶され、検出部601~決定部607の機能を有する情報処理プログラムをCPU#0がロードする。そして、CPU#0がロードした該情報処理プログラムにコーディングされている処理を実行することにより、検出部601~決定部607の機能が実現される。
図6は、情報処理装置300の機能ブロック図である。情報処理装置300は、検出部601と、差分算出部602と、判断部603と、第1の算出部604と、第2の算出部605と、比較部606と、決定部607と、を有している。具体的には、たとえば、共有メモリ302に記憶され、検出部601~決定部607の機能を有する情報処理プログラムをCPU#0がロードする。そして、CPU#0がロードした該情報処理プログラムにコーディングされている処理を実行することにより、検出部601~決定部607の機能が実現される。
検出部601は、未実行の第1のスレッドと未実行の第2のスレッドとを検出する。
第1の算出部604は、検出部601により検出された第2のスレッドの実行時間と検出部601により検出された第1のスレッドの単位時間当たりの待機電力とを乗算する。これにより、第1の算出部604は、第2のスレッドのつぎに第1のスレッドが実行された場合の第1のスレッドの待機電力を算出する。
第2の算出部605は、第1のスレッドの実行時間と第2のスレッドの単位時間当たりの待機電力とを乗算することにより、第1のスレッドのつぎに第2のスレッドが実行された場合の第2のスレッドの待機電力を算出する。
比較部606は、第1の算出部604により算出された第1のスレッドの待機電力と第2の算出部605により算出された第2のスレッドの待機電力とを比較する。
比較部607は、比較部606により比較された比較結果に基づいて第1のスレッドと第2のスレッドとの実行順を決定する。
また、決定部607は、比較部606により第1のスレッドの待機電力が第2のスレッドの待機電力以上であると比較された場合、実行順を第1のスレッドのつぎに第2のスレッドとする。
また、決定部607は、比較部606により第1のスレッドの待機電力が第2のスレッドの待機電力未満であると比較された場合、実行順を第2のスレッドのつぎに第1のスレッドとする。
差分算出部602は、検出部601により検出された第1のスレッドに実行期限が定義されている場合、第1のスレッドの生成時刻から実行期限までの時間と、第1のスレッドの実行時間との差分時間を算出する。
判断部603は、差分算出部602により算出された差分時間が第2のスレッドの実行時間より大きいか否かを判断する。
第1の算出部604は、判断部603により差分時間が第2のスレッドの実行時間より大きいと判断された場合、第2のスレッドの実行時間と第1のスレッドの単位時間当たりの待機電力とを乗算することにより、第1のスレッドの待機電力を算出する。
第2の算出部605は、判断部603により差分時間が第2のスレッドの実行時間より大きいと判断された場合、第1のスレッドの実行時間と第2のスレッドの単位時間当たりの待機電力とを乗算することにより、第2のスレッドの待機電力を算出する。
決定部607は、判断部603により差分時間が第2のスレッドの実行時間以下であると判断された場合、実行順を第1のスレッドのつぎに第2のスレッドとする。
以上を踏まえて詳細に説明する。本実施の形態では、高優先度のスレッドが生成された場合に、低優先度のスレッドと高い優先度のスレッドとの実行順を決定する例を示す。また、本実施の形態では、低優先度のスレッドのみが割り当てられているCPUについては、割り当てられた順に実行することとする。
本実施の形態では、高優先度が割り当てられていないCPUごとに実行順が決定され、最も待機電力が削減可能なCPUに生成された高優先度のスレッド(対象スレッド)を割り当てることとする。
ここでは、実行順の決定方法を示す。まず、OS310が、高優先度のスレッドが割り当てられていないCPUのうち、任意のCPU(対象CPU)を選択する。そして、OS310が、対象CPUに割り当てられている割当済のスレッドを特定する。つぎに、OS310が、下記式をそれぞれ算出する。
・ptotal=0
・r0=対象スレッドのデッドライン-対象スレッドの実行時間
・pst_high(対象スレッドの待機電力)=r0×対象スレッドの単位時間あたりの待機電力[mW/ms]
・pst_low(割当済のスレッドの待機電力)=対象スレッドの実行時間×(p1+p2+・・・pn)
・r0=対象スレッドのデッドライン-対象スレッドの実行時間
・pst_high(対象スレッドの待機電力)=r0×対象スレッドの単位時間あたりの待機電力[mW/ms]
・pst_low(割当済のスレッドの待機電力)=対象スレッドの実行時間×(p1+p2+・・・pn)
nは割当済スレッド数であり、割当順に沿って割当済スレッドに1~nの番号が付されている。p1~pnは、割当済スレッドの待機電力である。よって、(p1+p2+・・・pn)は、割当済スレッドの単位時間あたりの待機電力の合計値である。
つぎに、OS310が、下記式を遵守するか否かを判断する。
・r0>(t1∨t2∨・・・∨tn)∧pst_high<pst_low ・・・式(1)
・r0>(t1∨t2∨・・・∨tn)∧pst_high<pst_low ・・・式(1)
∧は論理積であり、∨は論理和である。t1~tnは、割当済スレッドの実行時間である。OS310が、上記式(1)がTrueである(遵守する)と、対象スレッドよりも先に実行する低優先度スレッドである割当済のスレッドを決定する。
そして、OS310が、r0>(t1∨t2∨・・・∨tn)となる割当済スレッドの中で、単位時間あたりの待機電力が最も大きいスレッドを対象スレッドよりも先に実行するスレッドとして選択する。ここで、たとえば、割当済スレッドの中で、1番目に割り当てられたスレッドが対象スレッドよりも先に実行するスレッド(先行スレッド)として選択されたと仮定する。
そして、OS310が、(a)下記式を算出する。
・ptotal=ptotal+t1×p0 ・・・式(2)
・pst_high=pst_high-t1×p0 ・・・式(3)
・pst_low=pst_low-t1×p0 ・・・式(4)
・r0=r0-t1 ・・・式(5)
・ptotal=ptotal+t1×p0 ・・・式(2)
・pst_high=pst_high-t1×p0 ・・・式(3)
・pst_low=pst_low-t1×p0 ・・・式(4)
・r0=r0-t1 ・・・式(5)
そして、OS310が、(b)下記式を遵守するか否かを判断する。
・pst_high<pst_low ・・・式(6)
・pst_high<pst_low ・・・式(6)
そして、OS310が、(b)上記式(6)を遵守すると判断した場合、r0>(t2∨・・・∨tn)となる割当済スレッドの中で、単位時間あたりの待機電力が最も大きいスレッドを、先行スレッドのつぎで、対象スレッドよりも先に実行するスレッドとして選択する。
そして、OS310が、(a)~(b)の処理を繰り返すことで、対象CPUに割り当てた場合の実行順を決定する。そして、OS310が、対象CPUに対象スレッドが割り当てられた場合の実行順が決定すると、高優先度のスレッドが割り当てられていないCPUのうち、対象CPUとして未選択のCPUを対象CPUに選択する。そして、OS310が、該選択した対象CPUに対象スレッドが割り当てられた場合の実行順を決定する。
そして、高優先度のスレッドが割り当てられていないCPUのうち、該CPUごとに算出されたptotalが最も大きい値であるCPUを対象スレッドの割当先CPUに決定する。そして、決定した実行順を該割当先CPUに通知し、割当先CPUが通知された実行順に基づいて該割当先CPUに割り当てられたスレッドを実行する。
つぎに、具体的な数値を用いて詳細に説明する。
図7は、スレッド#0の生成が検出される例を示す説明図である。まず、OS310が(1)スレッド#0の生成を検出すると、スレッド#0の優先度が高いか否かをスレッド#0の識別情報に基づきスレッドテーブル400を用いて判断する。ここでは、スレッド#0の優先度は高いと判断される。つぎに、OS310が、マルチコアプロセッサのうち、(2)高優先度のスレッドが割り当てられていないCPUを割当管理テーブル500に基づいて特定する。ここでは、CPU#0とCPU#1とが特定される。まず、OS310が、CPU#0とCPU#1のうち、CPU#0を対象CPUに選択する。
・r0(CPU#0)=スレッド#0のデッドライン-スレッド#0の実行時間
=10[ms]-5[ms]
=5[ms]
・pst_high(CPU#0)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#0)=スレッド#0の実行時間×(スレッド#1の単位時間あたりの待機電力+スレッド#3の単位時間あたりの待機電力)
=5[ms]×(100[mW/ms]+80[mW/ms])
=900[ms]
=10[ms]-5[ms]
=5[ms]
・pst_high(CPU#0)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#0)=スレッド#0の実行時間×(スレッド#1の単位時間あたりの待機電力+スレッド#3の単位時間あたりの待機電力)
=5[ms]×(100[mW/ms]+80[mW/ms])
=900[ms]
つぎに、OS310が、上記式(1)に算出した各値を代入して上記式(1)を遵守するか否かを判断する。
・5[ms](r0(CPU#0))>(3[ms](スレッド#1の実行時間)∨2[ms](スレッド#3の実行時間))∧500[mW](pst_high(CPU#0))<900[ms](pst_low(CPU#0))
・5[ms](r0(CPU#0))>(3[ms](スレッド#1の実行時間)∨2[ms](スレッド#3の実行時間))∧500[mW](pst_high(CPU#0))<900[ms](pst_low(CPU#0))
そして、OS310が、上記式(1)を遵守すると判断すると、r0(CPU#0)>(3[ms](スレッド#1の実行時間)∨2[ms](スレッド#3の実行時間))となる割当済スレッドの中で、単位時間あたりの待機電力が最大のスレッドを特定する。そして、OS310が、特定したスレッドをスレッド#0よりも先に実行するスレッドとして選択する。なお、選択結果を実行順情報として、共有メモリ302などの記憶領域に出力する。
・CPU#0の実行順情報:スレッド#1
・CPU#0の実行順情報:スレッド#1
そして、OS310が、上記式(2)~(6)を算出する。
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=0+3[ms]×100[mW/ms]
=300[mW]
・pst_high(CPU#0)=pst_high(CPU#0)-スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=500[mW]-3[ms]×100[mW/ms]
=200[mW]
・pst_low(CPU#0)=pst_low(CPU#0)-スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=900[ms]-3[ms]×100[mW/ms]
=600[mW]
・r0(CPU#0)=r0(CPU#0)-スレッド#1の実行時間
=5[ms]-3[ms]
=2[ms]
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=0+3[ms]×100[mW/ms]
=300[mW]
・pst_high(CPU#0)=pst_high(CPU#0)-スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=500[mW]-3[ms]×100[mW/ms]
=200[mW]
・pst_low(CPU#0)=pst_low(CPU#0)-スレッド#1の実行時間×スレッド#0の単位時間あたりの待機電力
=900[ms]-3[ms]×100[mW/ms]
=600[mW]
・r0(CPU#0)=r0(CPU#0)-スレッド#1の実行時間
=5[ms]-3[ms]
=2[ms]
そして、OS310が、上記式(6)を遵守するか否かを判断する。
・200[mW]<600[mW]
・200[mW]<600[mW]
そして、OS310が、上記式(6)を遵守すると判断し、r0(CPU#0)>(スレッド#3の実行時間)となる割当済スレッドの中で、単位時間あたりの待機電力が最も大きいスレッドを、先行スレッドのつぎで、対象スレッドよりも先に実行するスレッドとして選択する。そして、選択結果を上述のCPU#0の実行順情報に追加する。
・CPU#0の実行順情報:スレッド#1→スレッド#3
・CPU#0の実行順情報:スレッド#1→スレッド#3
そして、OS310が、上記式(2)を算出する。
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#3の実行時間×スレッド#0の単位時間あたりの待機電力
=300[mW]+2[ms]×100[mW/ms]
=500[mW]
・ptotal(CPU#0)=ptotal(CPU#0)+スレッド#3の実行時間×スレッド#0の単位時間あたりの待機電力
=300[mW]+2[ms]×100[mW/ms]
=500[mW]
ここで、CPU#0に割り当てられているスレッドがスレッド#1とスレッド#3のみであるため、CPU#0の実行順情報にスレッド#0を追加する。
・CPU#0の実行順情報:スレッド#1→スレッド#3→スレッド#0
・CPU#0の実行順情報:スレッド#1→スレッド#3→スレッド#0
つぎに、OS310が、CPU#0とCPU#1のうち、CPU#1を対象CPUに選択する。
・r0(CPU#1)=スレッド#0のデッドライン-スレッド#0の実行時間
=10[ms]-5[ms]
=5[ms]
・pst_high(CPU#1)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#1)=スレッド#0の実行時間×(スレッド#2の単位時間あたりの待機電力+スレッド#4の単位時間あたりの待機電力)
=5[ms]×(50[mW/ms]+70[mW/ms])
=600[ms]
=10[ms]-5[ms]
=5[ms]
・pst_high(CPU#1)=r0×スレッド#0の単位時間あたりの待機電力[mW/ms]
=5[ms]×100[mW/ms]
=500[mW]
・pst_low(CPU#1)=スレッド#0の実行時間×(スレッド#2の単位時間あたりの待機電力+スレッド#4の単位時間あたりの待機電力)
=5[ms]×(50[mW/ms]+70[mW/ms])
=600[ms]
つぎに、OS310が、上記式(1)に算出した各値を代入して上記式(1)を遵守するか否かを判断する。
・5[ms](r0(CPU#1))>(4[ms](スレッド#2の実行時間)∨5[ms](スレッド#4の実行時間))∧500[mW](pst_high(CPU#1))<600[ms](pst_low(CPU#1))
・5[ms](r0(CPU#1))>(4[ms](スレッド#2の実行時間)∨5[ms](スレッド#4の実行時間))∧500[mW](pst_high(CPU#1))<600[ms](pst_low(CPU#1))
そして、OS310が、上記式(1)を遵守すると判断すると、r0(CPU#1)>(4[ms](スレッド#2の実行時間))となる割当済スレッドの中で、単位時間あたりの待機電力が最大のスレッドを特定する。そして、OS310が、特定したスレッドをスレッド#0よりも先に実行するスレッドとして選択する。なお、選択結果を実行順情報として、共有メモリ302などの記憶領域に出力する。
・CPU#1の実行順情報:スレッド#2
・CPU#1の実行順情報:スレッド#2
そして、OS310が、上記式(2)を算出する。
・ptotal(CPU#1)=ptotal(CPU#1)+スレッド#2の実行時間×スレッド#0の単位時間あたりの待機電力
=0+4[ms]×100[mW/ms]
=400[mW]
・ptotal(CPU#1)=ptotal(CPU#1)+スレッド#2の実行時間×スレッド#0の単位時間あたりの待機電力
=0+4[ms]×100[mW/ms]
=400[mW]
ここで、r0(CPU#1)未満であるスレッドがスレッド#2のみであるため、CPU#1の実行順情報にスレッド#0を登録し、さらに、スレッド#4を登録する。
・CPU#1の実行順情報:スレッド#2→スレッド#0→スレッド#4
・CPU#1の実行順情報:スレッド#2→スレッド#0→スレッド#4
つぎに、OS310がCPU#0とCPU#1のうち、ptotalが大きいCPUをスレッド#0の割当先CPUに決定する。ここでは、ptotal(CPU#0)が500[mW]であり、ptotal(CPU#1)が400[mW]であるため、CPU#0がスレッド#0の割当先CPUに決定される。
図8は、割当管理テーブル500の更新例を示す説明図である。OS310が、割当管理テーブル500内のCPUの識別情報がCPU#0に、割当済スレッドの識別情報の項目503にスレッド#0の識別情報を登録する。そして、OS310が、スレッド#1の実行状態の項目504にexeを設定し、スレッド#3の実行状態の項目504にprohを設定し、スレッド#0の実行状態の項目504にprohを設定する。そして、OS310が、スレッド#1の実行を開始する。
(情報処理手順)
図9~11は、情報処理装置300による情報処理手順を示すフローチャートである。実行主体はマスタOSであるOS310である。まず、OS310が、スレッドの生成を検出したか否かを判断する(ステップS901)。OS310が、スレッドの生成を検出していないと判断した場合(ステップS901:No)、ステップS901へ戻る。OS310が、スレッドの生成を検出したと判断した場合(ステップS901:Yes)、生成されたスレッド(対象スレッド)が高優先度スレッドであるか否かを判断する(ステップS902)。
図9~11は、情報処理装置300による情報処理手順を示すフローチャートである。実行主体はマスタOSであるOS310である。まず、OS310が、スレッドの生成を検出したか否かを判断する(ステップS901)。OS310が、スレッドの生成を検出していないと判断した場合(ステップS901:No)、ステップS901へ戻る。OS310が、スレッドの生成を検出したと判断した場合(ステップS901:Yes)、生成されたスレッド(対象スレッド)が高優先度スレッドであるか否かを判断する(ステップS902)。
OS310が、対象スレッドが高優先度スレッドであると判断した場合(ステップS902:Yes)、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定する(ステップS903)。そして、OS310が、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定できたか否かを判断する(ステップS904)。
OS310が、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定できたと判断した場合(ステップS904:Yes)、ロックがかかっていないCPUのうち、未選択なCPUがあるか否かを判断する(ステップS905)。
OS310が、未選択なCPUがあると判断した場合(ステップS905:Yes)、未選択なCPUから任意のCPUを対象CPUに選択する(ステップS906)。そして、OS310が、実行順の決定処理を実行し(ステップS907)、対象CPUの識別情報と実行順情報とptotalとを関連付けて出力し(ステップS908)、ステップS905へ戻る。
OS310が、対象スレッドが高優先度スレッドでないと判断した場合(ステップS902:No)、最小負荷のCPUを特定する(ステップS909)。そして、OS310が、対象スレッドの割当先CPUを特定した最小負荷のCPUに設定し(ステップS910)、ステップS901へ戻る。
OS310が、高優先度スレッドの割り当てに関するロックがかかっていないCPUを特定できなかったと判断した場合(ステップS904:No)、未選択なCPUがあるか否かを判断する(ステップS911)。そして、OS310が、未選択なCPUがあると判断した場合(ステップS911:Yes)、未選択なCPUから任意のCPUを選択する(ステップS912)。
OS310が、選択したCPUの実行順情報に登録されたスレッドを抽出し(ステップS913)、抽出したスレッドの実行時間の合計値を算出する(ステップS914)。OS310が、抽出したスレッドの実行時間の合計値<対象スレッドのデッドライン(d0)-対象スレッドの実行時間(t0)であるか否かを判断する(ステップS915)。
OS310が、抽出したスレッドの実行時間の合計値<d0-t0であると判断した場合(ステップS915:Yes)、対象CPUを、d0を遵守可能なCPUに決定し(ステップS916)、ステップS911へ戻る。一方、抽出したスレッドの実行時間の合計値<d0-t0でないと判断した場合(ステップS915:No)、ステップS911へ戻る。
OS310が、未選択なCPUがないと判断した場合(ステップS911:No)、d0を遵守可能なCPUがあるか否かを判断する(ステップS917)。OS310が、d0を遵守可能なCPUがあると判断した場合(ステップS917:Yes)、d0を遵守可能なCPUのうち、未選択なCPUがあるか否かを判断する(ステップS918)。
OS310が、d0を遵守可能なCPUのうち、未選択なCPUがあると判断した場合(ステップS918:Yes)、未選択なCPUから任意のCPUを対象CPUに選択する(ステップS919)。そして、OS310が、実行順の決定処理を実行し(ステップS920)、対象CPUの識別情報と実行順情報とptotalとを関連付けて出力し(ステップS921)、ステップS905へ戻る。
ステップS918において、OS310が、d0を遵守可能なCPUのうち、未選択なCPUがないと判断した場合(ステップS918:No)、d0を遵守可能なCPUのうち、最もptotalの値が大きいCPUを特定する(ステップS922)。そして、OS310が、特定したCPUの実行順情報を特定したCPUに通知し(ステップS923)、対象スレッドの割当先CPUを特定したCPUに設定し(ステップS924)、ステップS901へ戻る。
OS310が、d0を遵守可能なCPUがないと判断した場合(ステップS917:No)、各CPUに割当済の高優先度のスレッドのうち、実行時間が最小のスレッドを特定する(ステップS925)。つぎに、OS310が、特定したスレッドの割当先CPUを対象スレッドの割当先CPUに設定し(ステップS926)、実行順情報の破棄指示に対象スレッドの割当先CPUに通知し(ステップS927)、ステップS901へ戻る。
ステップS905において、OS310が、未選択なCPUがないと判断した場合(ステップS905:No)、ロックがかかっていないCPUのうち、最もptotalの値が大きいCPUを特定する(ステップS928)。そして、OS310が、特定したCPUの実行順情報を特定したCPUに通知し(ステップS929)、対象スレッドの割当先CPUを特定したCPUに設定し(ステップS930)、ステップS901へ戻る。
図12および図13は、図9で示した実行順の決定処理(ステップS907)の詳細な処理手順を示すフローチャートである。実行順の決定処理がステップS907またはステップS920の場合、実行主体はOS310であるが、実行順の決定処理がステップS1511(図15)の処理の場合、実行主体は各OSである。まず、OSが、r0=対象スレッドのデッドライン(d0)-対象スレッドの実行時間(t0)を算出し(ステップS1201)、pst_high=r0×対象スレッドの単位時間あたりの待機電力(p0)を算出する(ステップS1202)。
つぎに、OSが、ptotal=0とし(ステップS1203)、m=1とし(ステップS1204)、対象CPUに割当済のCPUを特定する(ステップS1205)。OSが、特定した割当済のスレッドのうち、r0よりも実行時間が小さいスレッドを特定する(ステップS1206)。そして、OSが、r0よりも実行時間が小さいスレッドを特定できたか否かを判断する(ステップS1207)。
OSが、r0よりも実行時間が小さいスレッドを特定できたと判断した場合(ステップS1207:Yes)、割当済のスレッドの待機電力の合計値(psum)を算出する(ステップS1208)。OSが、pst_low=psum×t0を算出し(ステップS1209)、pst_high>pst_lowであるか否かを判断する(ステップS1210)。
OSが、pst_high>pst_lowであると判断した場合(ステップS1210:Yes)、r0よりも実行時間が小さいスレッドのうち、未選択なスレッドがあるか否かを判断する(ステップS1211)。OSが、未選択なスレッドがあると判断した場合(ステップS1211:Yes)、未選択なスレッドのうち、最も単位時間あたりの待機電力が大きいスレッドを選択する(ステップS1212)。
そして、OSが、選択したスレッドの識別情報とmの値とを関連付けて実行順情報に出力する(ステップS1213)。OSが、ptotal=ptotal+t0×選択したスレッドの単位時間当たりの待機電力を算出し(ステップS1214)、pst_low=pst_low-t0×選択したスレッドの単位時間当たりの待機電力を算出する(ステップS1215)。
OSが、pst_high=pst_high-選択したスレッドの実行時間×p0を算出し(ステップS1216)、m=m+1とし(ステップS1217)、ステップS1211へ戻る。
ステップS1207において、OSが、r0よりも実行時間が小さいスレッドを特定できなかったと判断した場合(ステップS1207:No)、対象スレッドの識別情報とmの値とを関連付けて実行順情報に出力し(ステップS1218)、ステップS908へ移行する。
また、ステップS1210において、OSが、pst_high>pst_lowでないと判断した場合(ステップS1210:No)、ステップS1218へ移行する。
また、ステップS1211において、OSが、未選択なスレッドがないと判断した場合(ステップS1211:No)、ステップS1218へ移行する。
図14は、各OSによるスレッド割り当て時の情報処理手順を示すフローチャートである。まず、OSが、実行順情報の通知を受け付け、実行順情報の破棄指示を受け付け、またはスレッドの割り当てを検出したか否かを判断する(ステップS1401)。OSが、実行順情報の通知を受け付け、実行順情報の破棄指示を受け付け、およびスレッドの割り当てを検出していないと判断した場合(ステップS1401:No)、ステップS1401へ戻る。
OSが、実行順情報の通知を受け付けたと判断した場合(ステップS1401:実行順情報の通知)、保存済の実行順情報を破棄し、受け付けた実行順情報を保存する(ステップS1402)。
OSが、スレッドの割り当てを検出したと判断した場合(ステップS1401:スレッドの割り当て)、割り当てを検出したスレッドが高優先度スレッドであるか否かを判断する(ステップS1403)。OSが、割り当てを検出したスレッドが高優先度スレッドであると判断した場合(ステップS1403:Yes)、高優先度スレッドの割り当てに関するロックをかける(ステップS1404)。
そして、OSが、実行順情報内の先頭スレッドの実行状態をexeに設定する(ステップS1405)、実行順情報内の先頭スレッドを除く割当済スレッドの実行状態をprohに設定する(ステップS1406)。つぎに、OSが、実行順情報内の先頭スレッドの実行を開始し(ステップS1407)、ステップS1401へ戻る。
ステップS1403において、OSが、割り当てを検出したスレッドが高優先度スレッドでないと判断した場合(ステップS1403:No)、高優先度スレッドの割り当てに関するロックがかかっているか否かを判断する(ステップS1408)。OSが、高優先度スレッドの割り当てに関するロックがかかっていると判断した場合(ステップS1408:Yes)、割り当てを検出したスレッドが実行順情報内の先頭スレッドであるか否かを判断する(ステップS1409)。
そして、OSが、割り当てを検出したスレッドが実行順情報内の先頭スレッドでないと判断した場合(ステップS1409:No)、検出したスレッドの実行状態をprohに設定し(ステップS1410)、ステップS1401へ戻る。OSが、割り当て指示を検出したスレッドが実行順情報内の先頭スレッドであると判断した場合(ステップS1409:Yes)、検出したスレッドの実行状態をexeに設定し(ステップS1411)、ステップS1401へ戻る。
ステップS1408において、OSが、高優先度スレッドの割り当てに関するロックがかかっていないと判断した場合(ステップS1408:No)、ランキューの最後尾に検出したスレッドを登録し(ステップS1412)、ステップS1401へ戻る。
ステップS1401において、OSが、実行順情報の破棄指示の通知を受け付けたと判断した場合(ステップS1401:実行順情報の破棄指示の通知)、保存済の実行順情報を破棄する(ステップS1413)。そして、OSが、割当済の高優先度のスレッドのうち、最も先に割り当てられたスレッドの実行を開始し(ステップS1414)、ステップS1401へ戻る。
図15は、各OSによるスレッド終了時の情報処理手順を示すフローチャートである。まず、OSが、スレッドの終了またはスレッドの切り替えを検出したか否かを判断する(ステップS1501)。そして、OSが、スレッドの終了またはスレッドの切り替えを検出していないと判断した場合(ステップS1501:No)、ステップS1501に戻る。
OSが、スレッドの終了を検出したと判断した場合(ステップS1501:スレッドの終了)、終了したスレッドが高優先度スレッドであるか否かを判断する(ステップS1502)。OSが、終了したスレッドが高優先度スレッドでないと判断した場合(ステップS1502:No)、高優先度スレッドの割り当てに関するロックがかかっているか否かを判断する(ステップS1503)。
OSが、高優先度スレッドの割り当てに関するロックがかかっていると判断した場合(ステップS1503:Yes)、ステップS1509に移行する。OSが、高優先度スレッドの割り当てに関するロックがかかっていないと判断した場合(ステップS1503:No)、ステップS1505へ移行する。
OSが、終了したスレッドが高優先度スレッドであると判断した場合(ステップS1502:Yes)、割当済のスレッドの中に、終了したスレッドを除いて高優先度のスレッドがあるか否かを判断する(ステップS1504)。OSが、割当済のスレッドの中に、終了したスレッドを除いて高優先度のスレッドがないと判断した場合(ステップS1504:No)、高優先度のスレッドの割り当てに関するロックを解除する(ステップS1505)。
そして、OSが、割当済のすべてのスレッドの実行状態をexeに設定し(ステップS1506)、割当済のスレッドの中で、最も割り当てが先のスレッドの実行を開始し(ステップS1507)、ステップS1501へ戻る。
ステップS1504において、OSが、割当済のスレッドの中に、終了したスレッドを除いて高優先度のスレッドがあると判断した場合(ステップS1504:Yes)、実行順情報内に未実行のスレッドがあるか否かを判断する(ステップS1508)。OSが、実行順情報内に未実行のスレッドがあると判断した場合(ステップS1508:Yes)、実行順情報で未実行のスレッドのうち、先頭のスレッドの実行状態をexeに設定する(ステップS1509)。
OSが、先頭のスレッドの実行を開始し(ステップS1510)、ステップS1501へ戻る。OSが、実行順情報内に未実行のスレッドがないと判断した場合(ステップS1508:No)、実行順の決定処理を実行し(ステップS1511)、ステップS1501へ戻る。
以上説明したように、情報処理装置、情報処理プログラム、および情報処理方法によれば、第1のスレッドと第2のスレッドとが未実行の時に、各スレッドの待機電力の比較により実行順を決定する。これにより、スレッドを切り替えずに低消費電力化を図ることができる。
また、第1のスレッドの待機電力が第2のスレッドの待機電力以上である場合、第1のスレッドのつぎに第2のスレッドを実行する。これにより、待機電力の大きいスレッドを先に実行でき、低消費電力化を図ることができる。
また、第1のスレッドの待機電力が第2のスレッドの待機電力未満である場合、第2のスレッドのつぎに第1のスレッドを実行する。これにより、待機電力の大きいスレッドを先に実行でき、低消費電力化を図ることができる。
また、第1のスレッドに実行期限が定義されている場合、第1のスレッドの前に第2のスレッドを実行しても第1のスレッドが実行期限を遵守できるか否かを判断する。そして、第1のスレッドの前に第2のスレッドを実行しても第1のスレッドが実行期限を遵守できると判断された場合において、第1のスレッドの待機電力と第2のスレッドの待機電力に基づき実行順を決定する。これにより、実行期限のあるスレッドの実行時にも、低消費電力化を図ることができる。
また、第1のスレッドの前に第2のスレッドを実行したら第1のスレッドが実行期限を遵守できないと判断された場合において、実行順を第1のスレッドのつぎに第2のスレッドとすることで、第1のスレッドのスループットが下がるのを防止することができる。
300 情報処理装置
601 検出部
602 差分算出部
603 判断部
604 第1の算出部
605 第2の算出部
606 比較部
607 決定部
601 検出部
602 差分算出部
603 判断部
604 第1の算出部
605 第2の算出部
606 比較部
607 決定部
Claims (7)
- 未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出手段と、
前記検出手段により検出された第2のスレッドの実行時間と前記検出手段により検出された第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出手段と、
前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出手段と、
前記第1の算出手段により算出された第1のスレッドの待機電力と前記第2の算出手段により算出された第2のスレッドの待機電力とを比較する比較手段と、
前記比較手段により比較された比較結果に基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定手段と、
を備えることを特徴とする情報処理装置。 - 前記決定手段は、
前記比較手段により前記第1のスレッドの待機電力が前記第2のスレッドの待機電力以上であると比較された場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴とする請求項1に記載の情報処理装置。 - 前記決定手段は、
前記比較手段により前記第1のスレッドの待機電力が前記第2のスレッドの待機電力未満であると比較された場合、前記実行順を前記第2のスレッドのつぎに前記第1のスレッドとすることを特徴とする請求項1に記載の情報処理装置。 - 前記検出手段により検出された第1のスレッドに実行期限が定義されている場合、前記第1のスレッドの生成時刻から前記実行期限までの時間と、前記第1のスレッドの実行時間との差分時間を算出する差分算出手段と、
前記差分算出手段により算出された差分時間が前記第2のスレッドの実行時間より大きいか否かを判断する判断手段と、
前記第1の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第2のスレッドの実行時間と前記第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドの待機電力を算出し、
前記第2の算出手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間より大きいと判断された場合、前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドの待機電力を算出することを特徴とする請求項1または2に記載の情報処理装置。 - 前記決定手段は、
前記判断手段により前記差分時間が前記第2のスレッドの実行時間以下であると判断された場合、前記実行順を前記第1のスレッドのつぎに前記第2のスレッドとすることを特徴等する請求項3に記載の情報処理装置。 - 未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出工程と、
前記検出工程により検出された第2のスレッドの実行時間と前記検出工程により検出された第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とを比較する比較工程と、
前記比較工程により比較された比較結果に基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータに実行させることを特徴とする情報処理プログラム。 - 未実行の第1のスレッドと未実行の第2のスレッドとを検出する検出工程と、
前記検出工程により検出された第2のスレッドの実行時間と前記検出工程により検出された第1のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第2のスレッドのつぎに前記第1のスレッドが実行された場合の前記第1のスレッドの待機電力を算出する第1の算出工程と、
前記第1のスレッドの実行時間と前記第2のスレッドの単位時間当たりの待機電力とを乗算することにより、前記第1のスレッドのつぎに前記第2のスレッドが実行された場合の前記第2のスレッドの待機電力を算出する第2の算出工程と、
前記第1の算出工程により算出された第1のスレッドの待機電力と前記第2の算出工程により算出された第2のスレッドの待機電力とを比較する比較工程と、
前記比較工程により比較された比較結果に基づいて前記第1のスレッドと前記第2のスレッドとの実行順を決定する決定工程と、
をコンピュータが実行することを特徴とする情報処理方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201080070002.8A CN103189842B (zh) | 2010-11-15 | 2010-11-15 | 信息处理装置以及信息处理方法 |
JP2012544019A JP5429402B2 (ja) | 2010-11-15 | 2010-11-15 | 情報処理装置、情報処理プログラム、および情報処理方法 |
PCT/JP2010/070317 WO2012066620A1 (ja) | 2010-11-15 | 2010-11-15 | 情報処理装置、情報処理プログラム、および情報処理方法 |
US13/890,920 US9430352B2 (en) | 2010-11-15 | 2013-05-09 | Information processing apparatus, computer product, and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/070317 WO2012066620A1 (ja) | 2010-11-15 | 2010-11-15 | 情報処理装置、情報処理プログラム、および情報処理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/890,920 Continuation US9430352B2 (en) | 2010-11-15 | 2013-05-09 | Information processing apparatus, computer product, and information processing method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2012066620A1 true WO2012066620A1 (ja) | 2012-05-24 |
Family
ID=46083586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2010/070317 WO2012066620A1 (ja) | 2010-11-15 | 2010-11-15 | 情報処理装置、情報処理プログラム、および情報処理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9430352B2 (ja) |
JP (1) | JP5429402B2 (ja) |
CN (1) | CN103189842B (ja) |
WO (1) | WO2012066620A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019109600A (ja) * | 2017-12-15 | 2019-07-04 | 富士通株式会社 | 情報処理装置、計算機制御方法、および計算機制御プログラム |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101770736B1 (ko) * | 2011-03-17 | 2017-09-06 | 삼성전자주식회사 | 응용프로그램의 질의 스케쥴링을 이용한 시스템의 소모전력 절감 방법 및 그 방법을 이용하여 소모전력을 절감하는 휴대단말기 |
US10884950B2 (en) * | 2016-05-16 | 2021-01-05 | International Business Machines Corporation | Importance based page replacement |
JP6959506B2 (ja) * | 2017-06-12 | 2021-11-02 | 富士通株式会社 | 並列処理システムのシステム管理装置、並列処理システムおよび電力制御方法 |
CN111596963B (zh) * | 2020-04-16 | 2022-11-04 | 广州博依特智能信息科技有限公司 | 一种设备开机时间合并方法、装置及存储介质 |
US20230229519A1 (en) * | 2022-01-14 | 2023-07-20 | Goldman Sachs & Co. LLC | Task allocation across processing units of a distributed system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07168726A (ja) * | 1993-12-16 | 1995-07-04 | Matsushita Electric Ind Co Ltd | 電子計算機及びマルチプロセスオペレーティングシステムのスケジューリング方法 |
JPH09297688A (ja) * | 1996-03-06 | 1997-11-18 | Mitsubishi Electric Corp | システムクロック決定装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6368934A (ja) | 1986-09-10 | 1988-03-28 | Nec Corp | タスクスケジユ−ル方式 |
CN1159021A (zh) * | 1996-03-06 | 1997-09-10 | 三菱电机株式会社 | 系统时钟确定装置 |
JP3043748B1 (ja) | 1999-03-26 | 2000-05-22 | 日本電気アイシーマイコンシステム株式会社 | タスクスケジュ―リング方法及び装置 |
US6775787B2 (en) * | 2002-01-02 | 2004-08-10 | Intel Corporation | Instruction scheduling based on power estimation |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US7206950B2 (en) * | 2004-06-16 | 2007-04-17 | Matsushita Electric Industrial Co., Ltd. | Processor system, instruction sequence optimization device, and instruction sequence optimization program |
US8015566B2 (en) * | 2005-01-13 | 2011-09-06 | Lenovo (Singapore) Pte. Ltd. | Attributing energy consumption to individual code threads in a data processing system |
KR20070089460A (ko) * | 2006-02-28 | 2007-08-31 | 삼성전자주식회사 | 우선 순위에 따른 비휘발성 메모리의 연산 처리 장치 및방법 |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP5208690B2 (ja) * | 2008-11-14 | 2013-06-12 | 株式会社東芝 | 主記憶データ書き換え装置及び方法 |
-
2010
- 2010-11-15 CN CN201080070002.8A patent/CN103189842B/zh not_active Expired - Fee Related
- 2010-11-15 WO PCT/JP2010/070317 patent/WO2012066620A1/ja active Application Filing
- 2010-11-15 JP JP2012544019A patent/JP5429402B2/ja not_active Expired - Fee Related
-
2013
- 2013-05-09 US US13/890,920 patent/US9430352B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07168726A (ja) * | 1993-12-16 | 1995-07-04 | Matsushita Electric Ind Co Ltd | 電子計算機及びマルチプロセスオペレーティングシステムのスケジューリング方法 |
JPH09297688A (ja) * | 1996-03-06 | 1997-11-18 | Mitsubishi Electric Corp | システムクロック決定装置 |
Non-Patent Citations (2)
Title |
---|
DAISUKE MIYAKAWA ET AL.: "Preliminary Evaluation of the Per-Process Power Consumption Control Mechanism", IPSJ SIG NOTES, vol. 2005, no. 79, 3 August 2005 (2005-08-03), pages 65 - 72 * |
SAYURI TERADA ET AL.: "Resource Allocation with Standby Power for Low Power Consumption and QoS-based Fairness", IEICE TECHNICAL REPORT, vol. 108, no. 78, 26 May 2008 (2008-05-26), pages 13 - 18 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019109600A (ja) * | 2017-12-15 | 2019-07-04 | 富士通株式会社 | 情報処理装置、計算機制御方法、および計算機制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP5429402B2 (ja) | 2014-02-26 |
CN103189842B (zh) | 2016-06-29 |
US20130262905A1 (en) | 2013-10-03 |
US9430352B2 (en) | 2016-08-30 |
JPWO2012066620A1 (ja) | 2014-05-12 |
CN103189842A (zh) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5429402B2 (ja) | 情報処理装置、情報処理プログラム、および情報処理方法 | |
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
KR101626378B1 (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
US20090113181A1 (en) | Method and Apparatus for Executing Instructions | |
US9588808B2 (en) | Multi-core system performing packet processing with context switching | |
CN104731560B (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
US20110004881A1 (en) | Look-ahead task management | |
US20160378565A1 (en) | Method and apparatus for regulating processing core load imbalance | |
WO2017206852A1 (zh) | 处理器计算资源的分配方法、装置及终端 | |
KR20130104853A (ko) | 다중코어 시스템 및 로드 밸런싱 방법 | |
JP5745868B2 (ja) | マルチプロセッサシステム | |
CN110300959B (zh) | 用于动态运行时任务管理的方法、系统、设备、装置和介质 | |
KR20110075296A (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
WO2012120654A1 (ja) | タスクスケジューリング方法およびマルチコアシステム | |
US20090059951A1 (en) | Program control device | |
GB2605068A (en) | Determining an optimum number of threads per core in a multi-core processor complex | |
KR20140030260A (ko) | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당 | |
CN113010286A (zh) | 并行任务调度方法、装置、计算机设备和存储介质 | |
Cho et al. | Scheduling parallel real-time tasks on the minimum number of processors | |
US9760969B2 (en) | Graphic processing system and method thereof | |
JP2014191655A (ja) | マルチプロセッサ、電子制御装置、プログラム | |
CN112114877B (zh) | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 | |
US20130132708A1 (en) | Multi-core processor system, computer product, and control method | |
US20040154018A1 (en) | Determining a priority value for a thread for execution on a multithreading processor system | |
JP5692341B2 (ja) | マルチプロセッサシステム、制御方法、および制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10859647 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2012544019 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: 10859647 Country of ref document: EP Kind code of ref document: A1 |