WO2012108058A1 - スケジューリング方法、設計支援方法、およびシステム - Google Patents

スケジューリング方法、設計支援方法、およびシステム Download PDF

Info

Publication number
WO2012108058A1
WO2012108058A1 PCT/JP2011/052953 JP2011052953W WO2012108058A1 WO 2012108058 A1 WO2012108058 A1 WO 2012108058A1 JP 2011052953 W JP2011052953 W JP 2011052953W WO 2012108058 A1 WO2012108058 A1 WO 2012108058A1
Authority
WO
WIPO (PCT)
Prior art keywords
cpus
operating
cpu
frequency
time
Prior art date
Application number
PCT/JP2011/052953
Other languages
English (en)
French (fr)
Inventor
鈴木 貴久
浩一郎 山下
宏真 山内
康志 栗原
俊也 大友
尚記 大舘
哲夫 平木
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2012556744A priority Critical patent/JP5713029B2/ja
Priority to PCT/JP2011/052953 priority patent/WO2012108058A1/ja
Priority to CN2011800671392A priority patent/CN103348324A/zh
Publication of WO2012108058A1 publication Critical patent/WO2012108058A1/ja
Priority to US13/963,506 priority patent/US20130326527A1/en
Priority to US15/219,703 priority patent/US20160334854A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a scheduling method and system for scheduling execution of a program.
  • the present invention also relates to a design support method for supporting system design.
  • DVFS Dynamic Voltage Frequency Scaling
  • CPU Central Processing Unit
  • FIG. 23 is an explanatory diagram showing an example of parallelization overhead.
  • parallelization overhead There are two main causes of parallelization overhead.
  • One is that the entire program cannot operate in parallel.
  • a program has a non-parallelizable part and a parallelizable part. For example, if there are 10 [%] non-parallelizable parts of the execution time when running on 1 CPU, even if there are multiple CPUs, the 10 [%] part that cannot be operated in parallel will interfere and more than 10 times The performance of will not come out.
  • the other is that when one process is divided and performed by a plurality of CPUs when performing parallel processing, it is necessary to synchronize or communicate between the processes across the CPUs (in FIG. 23, the synchronization is performed). / The communication part.) It is added when synchronization or communication processing, which is not required by execution of one CPU, is executed by two or more CPUs. Further, when executing with two CPUs or more, while one CPU is executing the non-parallelizable part, the other CPUs are in idle processing (idle part).
  • FIG. 24 is an explanatory diagram showing an example of the influence of parallelization overhead.
  • the vertical axis represents performance
  • the horizontal axis represents the number of CPUs.
  • the performance here is processing time. For example, when the processing time is changed from 40 [ms] to 20 [ms], it indicates that the performance has doubled.
  • the increase in the number of operating CPUs is proportional to the increase in performance.
  • the improvement in performance slows down as the number of operating CPUs increases.
  • Patent 2 By analyzing the application to identify the free time of each CPU, and changing the frequency of the clock supplied to the CPU using DVFS while maintaining the highest performance (hereinafter referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “conventional”) (Referred to as “
  • the prior art 2 has a problem that the clock frequency cannot be changed because it is unclear how the idle time changes when a plurality of applications are executed simultaneously. Taking mobile phones as an example, performance is not so important when users are creating emails over a long period of time, and parallelization is considered in consideration of cross-processor synchronization and communication overhead. It may be more efficient not to do it. However, the prior art 2 does not consider such a point, and since all the CPUs are used to perform parallel processing, there is a problem that the power consumption increases when the prior art 2 is used. .
  • An object of the present invention is to provide a scheduling method and system capable of reducing power consumption while maintaining a performance of a certain level or more in order to solve the above-described problems caused by the prior art. It is another object of the present invention to provide a design support method that can easily specify the combination of the number of operating CPUs and the clock frequency with the least power consumption and can shorten the system design period. .
  • the number of CPUs that detect a change from the first process to the second process and execute the second process from the memory
  • a scheduling method and system for acquiring an operating frequency, suspending an operating CPU or starting a stopped CPU based on the number of CPUs, and assigning the operating frequency to a CPU that executes the second process Is proposed.
  • the first operation time and the first stop time of the first several CPUs are measured, and the first operation time greater than the first minimum operation frequency is measured.
  • One operating frequency is set, and based on the first operating time and the first stop time, first power consumption of the first several CPUs operating at the first operating frequency is calculated, and the first Measure the second operating time and second stop time of the second several CPUs different from the first several when executing the process, and set the second operating frequency higher than the second minimum operating frequency
  • calculating second power consumption of the second several CPUs operating at the second operating frequency based on the second operation time and the second stop time and calculating the first power consumption and the second power consumption. 2 Based on the comparison result with the power consumption, the number of CPUs during the execution of the first process is determined. Design support method is proposed.
  • FIG. 1 is an explanatory diagram showing an example of the present invention.
  • FIG. 2 is an explanatory diagram illustrating a hardware example of the multi-core processor system.
  • FIG. 3 is a block diagram of a hardware example of the design support apparatus according to the first embodiment.
  • FIG. 4 is an explanatory diagram of a functional block diagram of the design support apparatus 300 according to the first embodiment.
  • FIG. 5 is an explanatory diagram showing an example of measurement data.
  • FIG. 6 is an explanatory diagram showing an example of the DVFS control information table 600.
  • FIG. 7 is a flowchart of an example of a design support processing procedure performed by the design support apparatus 300 according to the first embodiment.
  • FIG. 8 is a functional block diagram of the multi-core processor system 200 according to the second embodiment.
  • FIG. 9 is an explanatory diagram showing an example of occurrence of an event.
  • FIG. 10 is an explanatory diagram illustrating an example in which the number of operating CPUs changes.
  • FIG. 11 is a flowchart of an example of a control processing procedure performed by the OS 220 according to the second embodiment.
  • FIG. 12 is an explanatory diagram showing a functional block diagram of the design support apparatus 300.
  • FIG. 13 is an explanatory diagram illustrating an example of an operation time table.
  • FIG. 14 is an explanatory diagram of an example of a frequency / power table.
  • FIG. 15 is a flowchart of an example of a design support processing procedure performed by the design support apparatus 300 according to the third embodiment.
  • FIG. 16 is a functional block diagram of a multi-core processor system 200 according to the fourth embodiment.
  • FIG. 17 is an explanatory diagram showing an example in which a plurality of programs are executed simultaneously.
  • FIG. 18 is an explanatory diagram showing the total operating time.
  • FIG. 19 is an explanatory diagram illustrating an example of specifying the number of CPUs with the lowest power consumption.
  • FIG. 20 is an explanatory diagram of an example of changing the number of active CPUs.
  • FIG. 21 is a flowchart illustrating an example of a control processing procedure performed by the OS 220 according to the fourth embodiment.
  • FIG. 22 is a flowchart illustrating an example of a control processing procedure performed by the OS 220 according to the fourth embodiment.
  • FIG. 23 is an explanatory diagram of an example of parallelization overhead.
  • FIG. 24 is an explanatory diagram showing an example of the influence of parallelization overhead.
  • 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. In the present embodiment, in order to simplify the explanation, a processor group in which single-core processors are arranged in parallel will be described as an example.
  • FIG. 1 is an explanatory diagram showing an example of the present invention.
  • the number of operating CPUs and the clock frequency are stored in the table 100 for each usage scene.
  • the usage scene refers to, for example, a predetermined event such as activation of a specific process such as video playback or music playback, execution of a main function of a device such as an incoming call or mail, or opening / closing of a device. It is in a running state. Since the main function of the device is determined at the device planning stage, the use scene of the device is determined based on the main function.
  • the OS acquires the number of active CPUs and the clock frequency from the table 100 each time the usage scene is switched.
  • the number of operating CPUs is 2, and the frequency of the clock supplied to the operating CPU is 300 [MHz].
  • the OS acquires the number of operating CPUs and the clock frequency corresponding to the event that the terminal is closed from the table 100.
  • the number of operating CPUs is 3, and the frequency is 100 [MHz].
  • the OS supplies the acquired frequency clock to the CPUs for the number of operating CPUs, and executes the program being executed by the CPUs for the number of operating CPUs.
  • Embodiments 1 to 4 an example is shown in which each time the usage scene changes, the CPU is operated with the number of CPUs and the clock frequency corresponding to the usage scene after the change.
  • an optimal number of CPUs and a clock frequency are determined according to the combination of programs being executed.
  • Embodiment 1 shows an example in which the number of CPUs and the clock frequency corresponding to the usage scene are specified at the time of design.
  • FIG. 2 is an explanatory diagram illustrating a hardware example of the multi-core processor system.
  • the multi-core processor system 200 includes CPUs 201 to 204, a DVFS control mechanism 205, a RAM (Random Access Memory) 206, a ROM (Read Only Memory) 207, and a flash ROM 208. Further, the multi-core processor system 200 includes a flash ROM controller 209, a flash ROM 210, a display 211, a keyboard 212, and an I / F (Interface) 213. Each unit is connected via a bus 214.
  • the CPU 201 to CPU 204 each have a register, a core, and a cache.
  • the CPU 201 to CPU 204 execute a SMP (Symmetric Multiprocessing) type OS 220.
  • SMP Symmetric Multiprocessing
  • the internal processing of the OS 220 and the application program running on the OS 220 are theoretically executed across all CPUs with some exceptions. Each process is executed by any CPU on the multi-core processor, but it is not necessary to be aware of which CPU is executed.
  • the SMP type OS 220 it is not necessary to be aware of the number of operating CPUs, and the OS 220 appropriately allocates processing to the operating CPUs. Can be operated. Actually, only the core part of the OS 220 operates independently for each CPU, and the CPU determines which process is to be performed while communicating between the CPUs by the core part.
  • the ROM 207, the RAM 206, the flash ROM 208, the flash ROM controller 209, and the flash ROM 210 are memories shared by the CPUs 201 to 204.
  • the flash ROM 208 and the ROM 207 store a program such as a boot loader in which a boot sequence is described.
  • Flash ROM 208 and ROM 207 store system software such as an OS, application software, and a table controlled by OS 220.
  • the RAM 206 is used as a work area for each CPU.
  • the flash ROM controller 209 controls reading / writing of data with respect to the flash ROM 210 according to the control of each CPU.
  • the flash ROM 210 stores data written under the control of the flash ROM controller 209. Specific examples of the data include image data and video data acquired by the user using the multi-core processor system 200 through the I / F 213.
  • As the flash ROM 210 for example, a memory card or an SD card can be adopted.
  • the DVFS control mechanism 205 supplies a power supply voltage and a clock to each CPU.
  • the power supply voltage values that can be supplied to the CPU 201 to CPU 204 by the DVFS control mechanism 205 are 1.0 [V] to 1.6 [V] and 0 [V] in increments of 0.1 [V].
  • the power supply voltage is supplied from the DVFS control mechanism 205 to the CPUs 201 to 204 via the power supply lines VDD1 to VDD4, respectively.
  • the clock frequencies that the DVFS control mechanism 205 can supply to the CPUs 201 to 204 are 100 [MHz] to 500 [MHz] and 0 [Hz] in increments of 100 [MHz].
  • a clock is supplied from the DVFS control mechanism 205 to the CPUs 201 to 204 via clock wirings CLK1 to CLK4, respectively.
  • the power supply voltage to be supplied is 0 [V] or the clock frequency is 0 [Hz], the CPU is stopped.
  • the display 211 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box. Furthermore, the display 211 is a touch panel, and has keys for inputting numbers, various instructions, and the like, and may input data. As the display 211, for example, a TFT liquid crystal display 211 or the like can be adopted.
  • the keyboard 212 has keys for inputting numbers, various instructions, and the like, and inputs data.
  • the keyboard 212 may be a touch panel type input pad or a numeric keypad.
  • the I / F 213 is connected to a network such as a LAN (Local Area Network), a WAN (Wide Area Network), or the Internet through a communication line, and is connected to another device via the network.
  • the I / F 213 controls an internal interface with the network, and controls input / output of data from an external device.
  • a modem or a LAN adapter can be employed as the I / F 213.
  • FIG. 3 is a block diagram of a hardware example of the design support apparatus according to the first embodiment.
  • the design support apparatus 300 can be connected to a device having the multi-core processor system 200 and measures processing time and power consumption.
  • the design support apparatus 300 includes a CPU 301, a ROM 302, a RAM 303, a magnetic disk drive 304, a magnetic disk 305, an optical disk drive 306, an optical disk 307, a display 308, an I / F 309, and a keyboard 310.
  • the CPU 301 governs overall control of the design support apparatus 300.
  • the ROM 302 stores a program such as a boot program.
  • the RAM 303 is used as a work area for the CPU 301.
  • the magnetic disk drive 304 controls the reading / writing of the data with respect to the magnetic disk 305 according to control of CPU301.
  • the magnetic disk 305 stores data written under the control of the magnetic disk drive 304.
  • the optical disk drive 306 controls the reading / writing of the data with respect to the optical disk 307 according to control of CPU301.
  • the optical disk 307 stores data written under the control of the optical disk drive 306, and causes the computer to read data stored on the optical disk 307.
  • the display 308 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • a CRT a CRT
  • a TFT liquid crystal display a plasma display, or the like can be adopted.
  • the I / F 309 is connected to a network 314 such as a LAN (Local Area Network), a WAN (Wide Area Network), or the Internet through a communication line, and is connected to another device via the network 314.
  • the I / F 309 serves as an internal interface with the network 314 and controls data input / output from an external device.
  • a modem or a LAN adapter can be adopted as the I / F 309.
  • the keyboard 310 includes keys for inputting characters, numbers, various instructions, etc., and inputs data. Moreover, a touch panel type input pad or a numeric keypad may be used.
  • the mouse 311 performs cursor movement, range selection, window movement, size change, and the like. A trackball or a joystick may be used as long as they have the same function as a pointing device.
  • the scanner 312 optically reads an image and takes in the image data into the design support apparatus 300.
  • the scanner 312 may have an OCR (Optical Character Reader) function.
  • OCR Optical Character Reader
  • the printer 313 prints image data and document data.
  • a laser printer or an ink jet printer can be employed as the printer 313, for example, a laser printer or an ink jet printer can be employed.
  • FIG. 4 is an explanatory diagram of a functional block diagram of the design support apparatus 300 according to the first embodiment.
  • the design support apparatus 300 includes a measurement unit 401, a frequency calculation unit 402, a power consumption calculation unit 403, a determination unit 404, and an output unit 405.
  • a program having the measurement unit 401 to the output unit 405 is stored in a storage device such as the ROM 302, the magnetic disk 305, and the optical disk 307.
  • the CPU 301 accesses the storage device, reads the program, and executes the processing coded in the program, the processing of the measurement unit 401 to the output unit 405 is executed.
  • the measurement unit 401 generates a target event in a device having the multi-core processor system 200, and measures the operating time and the total free time when executing processing corresponding to the target event at the reference frequency for each number of operating CPUs.
  • the free time is a time when there is no processing that the OS 220 allocates to each CPU.
  • the measurement unit 401 measures the total free time generated in all the CPUs operating during typical processing as the total free time.
  • the operating time and the idle time are managed by the OS 220, so the design support apparatus 300 causes the OS 220 to measure the operating time and the total idle time.
  • FIG. 5 is an explanatory diagram showing an example of measurement data.
  • the usage scene 1 measurement data 501 includes an item for the number of CPUs, an item for operating time, and an item for waiting time. Since the multi-core processor system 200 has four CPUs, 1 to 4 are registered in the item of the number of CPUs. In the operating time item, the operating time for each CPU number in the usage scene 1 is registered, and in the waiting time item, the idle time for each CPU number in the usage scene 1 is registered.
  • the usage scene 2 measurement data 502 includes an item for the number of CPUs, an item for operating time, and an item for waiting time. Since the multi-core processor system 200 has four CPUs, 1 to 4 are registered in the item of the number of CPUs. In the operating time item, the operating time for each CPU number in the usage scene 2 is registered, and in the waiting time item, the idle time for each CPU number in the usage scene 2 is registered.
  • the usage scene 1 measurement data 501 and the usage scene 2 measurement data 502 are stored in a storage device such as the ROM 302, the magnetic disk 305, and the optical disk 307.
  • the frequency calculation unit 402 uses the ratio of the operation time for the specified CPU number measured by the measurement unit 401 to the operation time for each CPU number measured by the measurement unit 401.
  • the frequency that can satisfy the operating time is calculated for each number of CPUs.
  • the designated CPU number is 1.
  • the CPU calculates a frequency for each number of CPUs using the following formula (1).
  • Frequency reference frequency x measured operating time / operating time with the specified number of CPUs (1)
  • the power consumption calculation unit 403 calculates the power consumption amount for each CPU number using the power consumption of one CPU per unit time stored in the storage device according to the frequency calculated for each CPU number by the frequency calculation unit 402. To do.
  • the determination unit 404 determines the number of CPUs that is the minimum power consumption amount among the power consumption amounts calculated for each CPU number by the power consumption calculation unit 403 as the number of operating CPUs of the target event.
  • the output unit 405 outputs the number of active CPUs determined by the determination unit 404 and the calculated frequency in association with the identification information of the target event.
  • FIG. 6 is an explanatory diagram showing an example of the DVFS control information table 600.
  • the DVFS control information table 600 is an example of an output result.
  • the DVFS control information table 600 defines the number of operating CPUs, the frequency, and the power supply voltage for each specified event.
  • the DVFS control information table 600 includes an event item 601, an operating CPU number item 602, a frequency item 603, and a power supply voltage item 604.
  • a use scene transition condition is registered.
  • activation of the mailer activation of the moving image reproduction software, activation of the browser, closing of the terminal, and pressing of the key Y are registered.
  • the number of active CPUs is registered in the item 602 of the number of active CPUs.
  • the frequency item 603 the frequency of the clock supplied to the operating CPU is registered.
  • the power supply voltage item 604 the power supply voltage supplied to the operating CPU is registered.
  • FIG. 7 is a flowchart of an example of a design support processing procedure performed by the design support apparatus 300 according to the first embodiment.
  • the device is activated (step S703).
  • the device has the multi-core processor system 200 described above.
  • the design support apparatus 300 measures the operating time and the total free time (step S704), and calculates the minimum frequency that does not fall below the performance of the single core (step S705).
  • the design support apparatus 300 measures the minimum power supply voltage at which the CPU operates at the calculated frequency and the power consumption at the calculated frequency (step S706), and calculates the power consumption at the calculated frequency (step S707).
  • step S709 determines that the number of operating CPUs> the total number of CPUs (step S709: Yes)
  • the CPU number that minimizes the power consumption is determined (step S710), and the number of CPUs is determined in all usage scenes. It is determined whether it has been determined (step S711). If the design support apparatus 300 determines that the number of CPUs has not been determined for all usage scenes (step S711: No), the process returns to step S701.
  • step S712 If the design support apparatus 300 determines that the number of CPUs has been determined for all usage scenes (step S711: Yes), the determination result is output (step S712), and the series of processing ends.
  • Examples of the output format include display on the display 308, print output to the printer 313, and transmission to an external device via the I / F 309.
  • the data may be stored in a storage area such as the RAM 303, the magnetic disk 305, and the optical disk 307.
  • FIG. 8 is a functional block diagram of the multi-core processor system 200 according to the second embodiment.
  • the multi-core processor system 200 according to the second embodiment includes a storage unit 801, an event detection unit 802, a scene determination unit 803, a DVFS control unit 804, and a scheduling unit 805.
  • a program having the event detection unit 802 to the scheduling unit 805 is stored in a storage device such as the ROM 207.
  • the CPU accesses the storage device, reads the program, and executes the process coded in the program, the processes of the event detection unit 802 to the scheduling unit 805 are executed.
  • the program is the OS 220.
  • the storage unit 801 maintains the performance when executed by a specified number of CPUs for each of a plurality of events, and stores the number of CPUs, the frequency, and the power supply voltage at which power consumption is minimized.
  • the above-described DVFS control information table 600 is stored in the ROM 207 or the flash ROM 208.
  • the event detection unit 802 detects an event, and the scene determination unit 803 determines whether the event detected by the event detection unit 802 is included in the events registered in the DVFS control information table 600.
  • the DVFS control unit 804 operates on the target event stored in the storage unit 801. Get the number of CPUs.
  • the DVFS control unit 804 acquires the frequency related to the target event stored in the storage unit 801.
  • the DVFS control unit 804 supplies the acquired frequency clock to the CPUs for the acquired number of active CPUs.
  • the DVFS control unit 804 stops the number of CPUs exceeding the number of active CPUs from the active CPUs.
  • the DVFS control unit 804 activates the insufficient number of CPUs.
  • the scheduling part 805 performs the process according to the object event by CPU for the number of active CPUs.
  • FIG. 9 is an explanatory diagram showing an example of occurrence of an event.
  • the CPU 201 is operating, but the CPUs 202 to 204 are stopped.
  • the OS 220 detects (1) a mailer activation instruction.
  • the OS 220 confirms whether (2) activation of the mailer is registered in the event item 601 of the DVFS control table 600. Since activation of the mailer is registered in the event item 601 of the DVFS control table 600, it is determined that the OS 220 satisfies the use scene transition condition.
  • the OS 220 acquires (3) the number of operating CPUs related to the mailer activation, the frequency of the clock, and the value of the power supply voltage from the DVFS control information table 600.
  • the OS 220 determines whether it is necessary to change the number of operating CPUs by comparing the number of currently operating CPUs with the acquired number of operating CPUs.
  • the number of CPUs currently operating is 1, and the acquired number of operating CPUs is 2. Therefore, the number of CPUs that are insufficient is one.
  • the OS 220 determines the CPU to be started up from the stopped CPU in order to increase the number of operating CPUs by one.
  • the CPU 202 is determined to be activated.
  • the OS 220 controls the DVFS control mechanism 205 so as to provide the CPU 201 and the CPU 202 with (4) the acquired power supply voltage value and the acquired clock frequency.
  • FIG. 10 is an explanatory diagram showing an example in which the number of operating CPUs changes.
  • the power supply voltage value of the power supply wiring VDD1 and the power supply wiring VDD2 is 1.3 [V]
  • the clock frequency of the clock wiring CLK1 and the clock wiring CLK2 is 300 [MHz].
  • the power supply voltage value of the power supply wiring VDD3 and the power supply wiring VDD4 is 0 [V]
  • the clock frequency of the clock wiring CLK3 and the clock wiring CLK4 is 0 [Hz].
  • the OS 220 activates the mailer.
  • FIG. 11 is a flowchart of an example of a control processing procedure performed by the OS 220 according to the second embodiment.
  • the OS 220 determines whether an event has been detected (step S1101).
  • step S1101: No the process returns to step S1101.
  • step S1101 the usage scene transition condition of the DVFS control information table 600 is checked (step S1102).
  • the OS 220 determines whether or not the detected event matches the use scene transition condition (step S1103), and if it does not match (step S1103: No), the process proceeds to step S1112.
  • step S1103 When the OS 220 determines that the detected event matches the usage scene transition condition (step S1103: Yes), the CPU 220 obtains the number of operating CPUs, clock frequency, and power supply voltage corresponding to the detected event from the DVFS control information table 600. (Step S1104). Next, the OS 220 determines whether or not there is a change in the number of operating CPUs (step S1105), and when it is determined that there is no change in the number of operating CPUs (step S1105: No), the process proceeds to step S1111.
  • step S1105 determines whether the number of operating CPUs has increased (step S1106).
  • step S1106 determines that the number of operating CPUs has increased (step S1106: Yes)
  • step S1107 the CPU (starting CPU) to be started from the stopped CPU is determined (step S1107).
  • the OS 220 performs control for supplying the acquired power supply voltage value and frequency clock to the startup CPU and the operating CPU (step S1108), and the process proceeds to step S1112.
  • step S1106 determines that the number of operating CPUs has not increased (step S1106: No)
  • the CPU (stopped CPU) to be stopped is determined (step S1109), and control is performed to stop the power supply and frequency input of the stopped CPU.
  • step S1110 The OS 220 performs control to cause the operating CPU to supply the acquired power supply voltage value and frequency clock (step S1111).
  • step S1112 the OS 220 executes a process corresponding to the detected event in the operating CPU (step S1112), and proceeds to step S1101.
  • Embodiment 3 shows an example in which the processing time for each number of CPUs at the reference frequency is measured for each program, and the power consumption of one core per unit time is measured for each frequency.
  • FIG. 12 is an explanatory diagram showing a functional block diagram of the design support apparatus 300.
  • the design support apparatus 300 includes a measurement unit 1201 and an output unit 1202. Specifically, for example, a program having a measurement unit 1201 and an output unit 1202 is stored in a storage device such as the ROM 302, the magnetic disk 305, and the optical disk 307. When the CPU 301 accesses the storage device, reads the program, and executes the processing coded in the program, the processing of the measurement unit 1201 and the output unit 1202 is executed.
  • the measuring unit 1201 uses a device having the multi-core processor system 200 to measure the operating time for each number of CPUs at the reference frequency for each program.
  • the output unit 1202 outputs the measurement result and the program identification information in association with each other.
  • FIG. 13 shows an output example.
  • FIG. 13 is an explanatory diagram showing an example of an operation time table.
  • the operating time table 1300 is, for example, a table in which operating times related to mailers are registered, and the operating time required when executing mailers with the number of CPUs is registered for each number of CPUs.
  • the operating time table 1310 is, for example, a table in which operating times related to the browser are registered, and the operating time required when the mailer is executed with the number of CPUs is registered for each number of CPUs.
  • the operating time table 1300 has an item 1301 for the number of CPUs, an item 1302 for operating time, and an item 1303 for free time.
  • the operation time item 1302 registers the operation time per unit time when the mailer is executed with the number of CPUs for each CPU number registered in the CPU number item 1301.
  • the operating time table 1310 includes an item 1311 for the number of CPUs, an item 1312 for operating time, and an item 1313 for free time.
  • the CPU number field 1311 1 to 4 are registered.
  • the operation time item 1312 an operation time per unit time when the browser is executed with the number of CPUs is registered for each number of CPUs registered in the CPU number item 1311.
  • the free time item 1313 the total free time generated when the browser is executed by the CPUs corresponding to the number of CPUs is registered for each CPU number registered in the CPU number item 1311.
  • the measurement unit 1201 measures the power consumption of one CPU per unit time for each frequency.
  • the output unit 1203 outputs the measurement result.
  • FIG. 14 shows an output example.
  • FIG. 14 is an explanatory diagram showing an example of a frequency / power table.
  • the frequency / power table 1400 includes a frequency item 1401, a power supply voltage item 1402, and a power consumption item 1403 per CPU.
  • the frequency item 1401 registers the frequency of the clock that can be supplied to each CPU.
  • 100 [MHz], 200 [MHz], 300 [MHz], 400 [MHz], and 500 [MHz] are registered in the frequency item 1401.
  • the frequency / power table 1400 indicates that when the frequency of the supplied clock is 500 [MHz], the CPU does not operate unless the value of the supplied power supply voltage is 1.6 [V] or higher. Yes.
  • the frequency of the supplied clock is a value registered in the frequency item 1401
  • a value of the supplied power supply voltage is a value registered in the power supply voltage item 1402.
  • the value of power consumption per CPU is registered.
  • the frequency / power table 1400 when the frequency of the clock supplied to the CPU is 200 [MHz] and the value of the power supply voltage supplied to the CPU is 1.1 [V], the power consumption per CPU is The value indicates 40 [mW].
  • FIG. 15 is a flowchart of an example of a design support processing procedure performed by the design support apparatus 300 according to the third embodiment.
  • the design support apparatus 300 measures the operating time per unit time and the total free time (step S1504).
  • step S1507: No If the design support apparatus 300 determines that all the programs have not been measured (step S1507: No), the process returns to step S1501.
  • the design support apparatus 300 determines that the measurement has been completed for all the programs (step S1507: Yes)
  • it sets the CPU operating frequency (step S1508), and sets the minimum power supply voltage at which the CPU operates at the set operating frequency. The power consumption is measured (step S1509).
  • step S1510 It is determined whether the design support apparatus 300 has measured at all settable operating frequencies. When the design support apparatus 300 determines that measurement is not performed at all settable operating frequencies (step S1510: No), the process returns to step S1508. When the design support apparatus 300 determines that measurement is performed at all settable operating frequencies (step S1510: Yes), the measurement result is output (step S1511).
  • FIG. 16 is a functional block diagram of a multi-core processor system 200 according to the fourth embodiment.
  • the multi-core processor system 200 includes a storage unit 1601, a process management unit 1602, an operating CPU number determination unit 1603, a DVFS control unit 1604, and a scheduling unit 1605.
  • a program having the process management unit 1602 to the scheduling unit 1605 is stored in a storage device such as the ROM 207 or the flash ROM 208.
  • the CPU accesses the storage device, reads the program, and executes the process coded in the program, the processes of the process management unit 1602 to the scheduling unit 1605 are executed.
  • the program is the OS 220.
  • the storage unit 1601 stores the operating time for each number of CPUs at the reference frequency for each program, and stores the power consumption of one CPU per unit time for each frequency.
  • the ROM 207 and the flash ROM 208 store an operation time table 1300, an operation time table 1310, and a frequency / power table 1400.
  • the process management unit 1602 detects the activation of the target program.
  • the operating CPU number determination unit 1603 determines the number of operating CPUs that execute the target program and the program being executed.
  • the operating CPU number determination unit 1603 includes an extraction unit 1611, a frequency calculation unit 1612, a power consumption calculation unit 1613, and a determination unit 1614.
  • the extraction unit 1611 extracts the operating time of the program being executed by the multi-core processor from the storage unit 1601 for each number of CPUs.
  • the extraction unit 1611 extracts the operating time of the target program from the storage unit 1601 for each number of CPUs.
  • the frequency calculation unit 1612 satisfies the total operation time of the designated CPU number by the ratio of the operation time of the program being executed extracted by the extraction unit 1611 for each CPU number and the operation time of the target program. Is calculated for each number of CPUs.
  • the power consumption calculation unit 1613 calculates the power consumption amount for each CPU number based on the power consumption of one CPU per unit time stored in the storage unit 1601 corresponding to the frequency calculated for each CPU number by the frequency calculation unit 1612. calculate.
  • the determination unit 1614 determines the number of CPUs that is the minimum power consumption amount among the power consumption amounts calculated for each CPU number by the power consumption calculation unit 1613 as the number of active CPUs.
  • the DVFS control unit 1604 supplies clocks of the frequency calculated by the operating CPU number determining unit 1603 to the CPUs for the number of CPUs determined by the operating CPU number determining unit 1603.
  • the DVFS control unit 1604 stops the number of CPUs exceeding the number of operating CPUs from the operating CPUs.
  • the DVFS control unit 1604 activates the deficient CPUs. Then, the scheduling unit 1605 executes the target program and the program being executed by the determined number of CPUs. This will be described in detail based on the above.
  • FIG. 17 is an explanatory diagram showing an example in which a plurality of programs are executed simultaneously.
  • a browser is being executed and the number of operating CPUs is four.
  • the OS 220 detects a mailer activation instruction. Then, the OS 220 acquires identification information of the program being executed. The OS 220 acquires an operation time table corresponding to the program that acquired the identification information and an operation time table corresponding to the program that detected the activation instruction.
  • the operating time table 1300 related to the mailer and the operating time table 1310 related to the browser are read from the storage device such as the ROM 207 and the flash ROM 208.
  • FIG. 18 is an explanatory diagram showing the total operating time.
  • the OS 220 uses the operating time table 1300 and the operating time table 1310 to calculate the total operating time of the mailer and browser for each number of CPUs.
  • the total operation time is 165 [ms].
  • the total operation time is 125 [ms].
  • the total operation time is 100 [ms].
  • the total operation time is 75 [ms].
  • FIG. 19 is an explanatory diagram showing an example of specifying the number of CPUs with the lowest power consumption.
  • the OS 220 calculates the frequency of the clock capable of maintaining the operation time when the number of CPUs is 1 for each number of CPUs. Specifically, for example, the OS 220 calculates the clock frequency for each CPU number using the following equation (2).
  • Frequency reference frequency x total operating time for each CPU number / total operating time for the specified number of CPUs (2)
  • the reference frequency is set to 500 [MHz].
  • the calculation result by the equation (2) is 378 [MHz]
  • the clock frequency is 400 [MHz].
  • the calculation result by the equation (2) is 303 [MHz]
  • the clock frequency is 400 [MHz].
  • the calculation result by the equation (2) is 227 [MHz]
  • the clock frequency is 300 [MHz].
  • the OS 220 uses the frequency / power table 1400 to calculate the power consumption value when executed by each CPU. Since the power consumption per CPU in the case of 400 [MHz] is 85 [mW], when the number of CPUs is 2, the total power consumption is 85 ⁇ 2 and 170 [mW]. When the number of CPUs is 3, the total power consumption is 85 ⁇ 3 and 255 [mW]. Since power consumption per CPU in the case of 300 [MHz] is 60 [mW], when the number of CPUs is 4, the total power consumption is 60 ⁇ 4 and 240 [mW]. Therefore, since the number of CPUs having the same performance as the performance when the number of CPUs is 1 and the lowest power consumption is 2, the OS 220 determines the number of operating CPUs to be 2.
  • FIG. 20 is an explanatory diagram showing an example of changing the number of operating CPUs.
  • the OS 220 determines a stop CPU to be stopped in order to reduce the number of operating CPUs.
  • the CPU 203 and the CPU 204 are set as stop CPUs.
  • the OS 220 stops the supply of the clock / power supply voltage from the DVFS control mechanism 205 to the CPU 203 and the CPU 204.
  • the OS 220 sets the frequency of the clock supplied to the CPU 201 and the CPU 202 to 400 [MHz], and sets the value of the power supply voltage to 1.4 [V].
  • Step S2101 determines whether or not process activation or termination has been detected. If it is determined that process activation or termination has not been detected (step S2101: No), the process returns to step S2101. When the OS 220 determines that the activation or termination of the process has been detected (step S2101: Yes), all the active processes are identified (step S2102).
  • the OS 220 refers to the operating time table corresponding to the identified process (step S2103), and calculates the total of the operating time for all processes for each number of CPUs (step S2104).
  • the OS 220 acquires the power consumption value per CPU corresponding to the frequency at each CPU number calculated from the frequency / power table 1400 (step S2105), and calculates the total power consumption value for each CPU number (step S2106). ).
  • the OS 220 determines the number of operating CPUs that minimizes the calculated total power consumption value as the number of operating CPUs (step S2107), and determines whether or not there is a change in the number of operating CPUs (step S2108). When the OS 220 determines that there is no change in the number of operating CPUs (step S2108: No), the process proceeds to step S2101.
  • step S2108 determines whether the number of operating CPUs has increased (step S2109).
  • step S2109: Yes determines whether the number of operating CPUs has increased (step S2109: Yes)
  • step S2110 the CPU (starting CPU) to be started from the stopped CPU is determined (step S2110).
  • the OS 220 performs control of supplying the acquired power supply voltage value and frequency to the startup CPU and the operating CPU (step S2111), and the process proceeds to step S2101.
  • step S2109 determines that the number of operating CPUs has not increased (step S2109: No)
  • the CPU (stopped CPU) to be stopped is determined (step S2112), and control is performed to stop the power supply and frequency input of the stopped CPU. Perform (step S2113).
  • the OS 220 performs control to supply the acquired power supply voltage value and frequency to the active CPU (step S2114), and the process proceeds to step S2101.
  • the combination of the number of operating CPUs and the clock frequency that minimizes the power consumption for each event is specified.
  • the system can be operated with the number of operating CPUs and the frequency of clocks that minimize the power consumption.
  • the clock frequency is calculated based on the operation time and the reference frequency when processing corresponding to the event is executed by one CPU. Thereby, the performance when executed by one CPU can be maintained.
  • the number of operating CPUs and the clock frequency are stored in the memory for each predetermined event.
  • the number of operating CPUs and the frequency are switched, and processing corresponding to the event is executed.
  • the process according to the event can be executed by the combination of the number of operating CPUs and the clock frequency with the least power consumption, and the power consumption can be reduced.
  • the system can be configured with an optimal number of CPUs that minimizes power consumption by stopping the number of CPUs exceeding the number of active CPUs from the active CPUs. It can be operated.
  • the performance when executed by one CPU can be maintained by activating the insufficient CPUs.
  • the number of operating CPUs, the frequency of the clock, and the value of the power supply voltage are stored in the memory, and each time a predetermined event occurs, the number of operating CPUs, the frequency, and the value of the power supply voltage are switched. Perform the appropriate process.
  • the power consumption is proportional to the square of the frequency and the power supply voltage. Since the power supply voltage can be lowered by lowering the clock frequency, the power consumption can be reduced.
  • the operation time when executed by the CPUs corresponding to the number of CPUs for each program and the power consumption per CPU are stored for each frequency.
  • the optimum number of operating CPUs and frequencies with the lowest power consumption are specified while maintaining the performance when executed by one CPU, and a plurality of operating CPUs and frequencies are specified. Run the program. Thereby, power consumption can be reduced.
  • the system can be configured with an optimal number of CPUs that minimizes power consumption by stopping the number of CPUs exceeding the number of active CPUs from the active CPUs. It can be operated.
  • the performance when executed by one CPU can be maintained by activating the insufficient CPUs.

Abstract

 利用シーンごとに稼働CPU数とクロックの周波数とがテーブルに記憶されている。OSが、利用シーンが切り替わるごとにテーブルから稼働CPU数とクロックの周波数を取得する。たとえば、メール中には、稼働CPU数を2とし、稼働中のCPUに供給するクロックの周波数を300[MHz]とする。そして、メール中に端末が閉じられると、OSが、テーブルから端末が閉じられるイベントに対応する稼働CPU数とクロックの周波数を取得する。稼働CPU数は3であり、周波数は100[MHz]である。OSが、稼働CPU数分のCPUに取得した周波数のクロックを供給し、稼働CPU数分のCPUで実行中のプログラムを実行する。

Description

スケジューリング方法、設計支援方法、およびシステム
 本発明は、プログラムの実行をスケジューリングするスケジューリング方法、およびシステムに関する。また、本発明は、システムの設計を支援する設計支援方法に関する。
 従来、マルチコアプロセッサシステムにおいて、負荷ピーク時の発熱量を抑制させる技術として、単位時間当たりの消費電力が均一になるようにスケジューリングする技術が知られている(たとえば、下記特許文献1参照。)。
 また、従来、マルチコアプロセッサシステムにおいて、消費電力を削減する技術として、CPU(Central Processing Unit)へ供給するクロック周波数と電源電圧を動的に変更するDVFS(Dynamic Voltage Frequency Scaling)が知られている。さらに、マルチコアプロセッサでは、ある処理を複数のCPUに分散して実行することにより、処理時間を高速化することができる。
 そこで、マルチコアプロセッサシステムによる処理時間が稼働CPU数に比例するとして、稼働CPU数ごとに処理時間と消費電力を算出し、最適な稼働CPU数と電源電圧の値とクロックの周波数を決定する技術(以下、「従来技術1」と称する。)が知られている(たとえば、下記特許文献2参照。)。しかしながら、マルチコアプロセッサシステムを用いて処理を並列化すると、実際には並列化オーバーヘッドが存在するため、稼働CPU数に比例して、処理時間を高速化させることができない。
 図23は、並列化オーバーヘッド例を示す説明図である。並列化オーバーヘッドの要因には大きく二つある。一つはプログラム全体が並列に動作できるわけではないためである。たとえば、プログラムには、並列化不可部分と並列化可能部分とがある。たとえば、1CPUで動かした時の実行時間のうち並列化不可部分が10[%]あると、CPUが複数あったとしても、並列動作不可能な10[%]の部分が邪魔して10倍以上の性能は出ないことになる。
 もう一つは、並列処理をおこなう際に一つの処理を分割して複数のCPUでおこなうと、CPUをまたがった処理の間で同期や通信をおこなう必要があるためである(図23では、同期/通信部分である。)。1CPUの実行では不要だった同期や通信の処理が2CPU以上で実行する場合には追加される。さらに、2CPU以上で実行する場合には、一のCPUが並列化不可部分の実行中には他のCPUはアイドル処理となる(アイドル部分)。
 図24は、並列化オーバーヘッドの影響例を示す説明図である。グラフでは、縦軸が性能であり、横軸がCPU数である。ここでは、稼働CPU数が1のときの性能を1とした場合に、稼働CPU数の増加によってどのくらい性能が向上するかを示している。ここでの性能とは処理時間である。たとえば、処理時間が40[ms]から20[ms]になると、性能が2倍になったことを示す。グラフ中の理想値では、稼働CPU数の増加と性能の増加が比例している。しかしながら、グラフ中の実性能では、稼働CPU数が増加すればするほど、性能の向上が鈍化する。
 そこで、アプリケーションを解析して各CPUの空き時間を特定し、最高性能を維持しつつDVFSを用いてCPUへ供給するクロックの周波数を変更することで、消費電力を削減する技術(以下、「従来技術2」と称する。)が知られている(たとえば、下記特許文献3参照。)。たとえば、従来技術2では、処理A、処理B、処理Cの三つの処理があり、処理Cが処理Aと処理Bの結果を利用するため、この二つの処理が終了していないと開始できないとする。このとき、基準周波数では処理Aが5秒、処理Bが10秒で終了するとした場合、処理Aと処理Bを別々のCPUで実行したとして、処理Aを実行するCPUへ供給する処理Aを実行中のクロックの周波数を基準周波数の半分にしても処理Cの開始時刻は変わらない。よって、DVFSにより消費電力の削減が可能となる。
特許第3567354号公報 特開2005-85164号公報 特開2006-293768号公報
 しかしながら、従来技術2では、複数のアプリケーションが同時に実行された場合、どのように空き時間が変化するか不明であるため、クロックの周波数を変更することができない問題点があった。また、携帯電話を例に挙げると、利用者がメールを長時間掛けて作成している最中などには性能はあまり重要ではなく、プロセッサをまたがった同期や通信によるオーバーヘッドを考慮すると並列化を行わない方がかえって効率が良い可能性がある。しかしながら、従来技術2ではそのような点は考慮されておらず、全てのCPUを最大限活用して並列処理を行おうとするため、従来技術2を用いると消費電力が増加する問題点があった。
 本発明は、上述した従来技術による問題点を解消するため、一定以上の性能を保ちつつ、消費電力を減少させることができるスケジューリング方法、およびシステムを提供することを目的とする。また、本発明は、消費電力が最も少ない稼働CPU数とクロック周波数の組み合わせを容易に特定することができ、システムの設計期間を短縮化することができる設計支援方法を提供することを目的とする。
 上述した課題を解決し、目的を達成するため、本発明の一の側面によれば、第1処理から第2処理への変更を検出し、メモリから前記第2処理を実行するCPUの数と動作周波数とを取得し、前記CPUの数に基づいて、稼働中のCPUを停止しまたは停止中のCPUを起動し、前記第2処理を実行するCPUに前記動作周波数を割り当てるスケジューリング方法、およびシステムが提案される。
 また、本発明の他の側面によれば、第1処理を実行するときの、第1数個のCPUの第1動作時間と第1停止時間とを測定し、第1最小動作周波数より大きい第1動作周波数を設定し、前記第1動作時間と前記第1停止時間とに基づいて、前記第1動作周波数で動作する前記第1数個のCPUの第1消費電力を算出し、前記第1処理を実行するときの、前記第1数個とは異なる第2数個のCPUの第2動作時間と第2停止時間とを測定して、第2最小動作周波数より大きい第2動作周波数を設定し、前記第2動作時間と前記第2停止時間とに基づいて、前記第2動作周波数で動作する前記第2数個のCPUの第2消費電力を算出し、前記第1消費電力と前記第2消費電力との比較結果に基づいて、前記第1処理実行時のCPUの数を決定する設計支援方法が提案される。
 本発明の一の側面によれば、一定以上の性能を保ちつつ、消費電力を減少させることができるという効果を奏する。また、本発明の他の側面によれば、消費電力が最も少ない稼働CPU数とクロック周波数の組み合わせを容易に特定することができるという効果を奏する。
図1は、本発明の一例を示す説明図である。 図2は、マルチコアプロセッサシステムのハードウェア例を示す説明図である。 図3は、実施の形態1にかかる設計支援装置のハードウェア例を示すブロック図である。 図4は、実施の形態1にかかる設計支援装置300の機能ブロック図を示す説明図である。 図5は、測定データの一例を示す説明図である。 図6は、DVFS制御情報テーブル600の一例を示す説明図である。 図7は、実施の形態1にかかる設計支援装置300による設計支援処理手順の一例を示すフローチャートである。 図8は、実施の形態2にかかるマルチコアプロセッサシステム200の機能ブロック図である。 図9は、イベントの発生例を示す説明図である。 図10は、稼働中のCPUの数が変化する例を示す説明図である。 図11は、実施の形態2にかかるOS220による制御処理手順の一例を示すフローチャートである。 図12は、設計支援装置300の機能ブロック図を示す説明図である。 図13は、稼働時間テーブル例を示す説明図である。 図14は、周波数・電力テーブル例を示す説明図である。 図15は、実施の形態3にかかる設計支援装置300による設計支援処理手順の一例を示すフローチャートである。 図16は、実施の形態4にかかるマルチコアプロセッサシステム200の機能ブロック図である。 図17は、複数のプログラムが同時に実行される例を示す説明図である。 図18は、合計稼働時間を示す説明図である。 図19は、消費電力が最も低くなるCPU数を特定する例を示す説明図である。 図20は、稼働CPU数の変更例を示す説明図である。 図21は、実施の形態4にかかるOS220による制御処理手順の一例を示すフローチャートである。 図22は、実施の形態4にかかるOS220による制御処理手順の一例を示すフローチャートである。 図23は、並列化オーバーヘッド例を示す説明図である。 図24は、並列化オーバーヘッドの影響例を示す説明図である。
 以下に添付図面を参照して、本発明にかかるスケジューリング方法、設計支援方法、およびシステムの実施の形態を詳細に説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
 図1は、本発明の一例を示す説明図である。たとえば、利用シーンごとに稼働CPU数とクロックの周波数とがテーブル100に記憶されている。ここで、利用シーンとは、たとえば、利用者が動画再生や音楽再生といった特定の処理の起動や、通話やメールの着信といった機器の主要な機能の実行や、機器の開閉などの所定のイベントを実行している状態である。その機器がどのような主要機能を持つかは機器の企画段階で決められるので、主要機能に基づいて機器の利用シーンが決定される。OSが、利用シーンが切り替わるごとにテーブル100から稼働CPU数とクロックの周波数を取得する。
 たとえば、メール中には、稼働CPU数を2とし、稼働中のCPUに供給するクロックの周波数を300[MHz]とする。そして、メール中に端末が閉じられると、OSが、テーブル100から端末が閉じられるイベントに対応する稼働CPU数とクロックの周波数を取得する。稼働CPU数は3であり、周波数は100[MHz]である。OSが、稼働CPU数分のCPUに取得した周波数のクロックを供給し、稼働CPU数分のCPUで実行中のプログラムを実行する。
 ここでは、実施の形態1~実施の形態4を用いて詳細に説明する。実施の形態1,2では、利用シーンが変化するごとに、変化後の利用シーンに応じたCPU数とクロックの周波数で動作させる例を示す。実施の形態3,4では、複数のプログラムが同時に実行された場合に、実行中のプログラムの組み合わせに応じて最適なCPU数とクロックの周波数を決定する例を示す。
(実施の形態1)
 まず、実施の形態1では、利用シーンに応じたCPU数とクロックの周波数を設計時に特定する例を示す。
(マルチコアプロセッサシステムのハードウェア例)
 図2は、マルチコアプロセッサシステムのハードウェア例を示す説明図である。マルチコアプロセッサシステム200は、CPU201~CPU204と、DVFS制御機構205と、RAM(Random Access Memory)206と、ROM(Read Only Memory)207と、フラッシュROM208と、を有している。さらに、マルチコアプロセッサシステム200は、フラッシュROMコントローラ209と、フラッシュROM210と、ディスプレイ211と、キーボード212と、I/F(InterFace)213と、を有している。各部は、バス214を介して接続されている。
 まず、CPU201~CPU204は、それぞれレジスタとコアとキャッシュとを有している。CPU201~CPU204はSMP(Symmetric Multiprocessing)型のOS220を実行する。SMP型のOS220では、OS220の内部処理もOS220上で動くアプリケーションプログラムも一部の例外を除いて、理論的にはすべてのCPUにまたがって実行される。各処理はマルチコアプロセッサ上のいずれかのCPUで実行されるが、どのCPUで実行されるかは意識する必要がない。
 そのため、SMP型のOS220では、稼働中のCPUの数を意識する必要が無く、OS220が稼働中のCPUに適切に処理を割り振るため、ソフトウェアは特に変更を加えなくても様々なCPU数で機器を動作させることができる。実際には、OS220の中核部分だけがCPUごとに独立して動作し、中核部分によりCPU間で通信しながらどのCPUでどの処理をおこなうかを決定している。
 ROM207と、RAM206と、フラッシュROM208と、フラッシュROMコントローラ209と、フラッシュROM210とは、CPU201~CPU204に共有されるメモリである。
 フラッシュROM208やROM207には、ブートシーケンスが記述されたブートローダなどのプログラムが記憶されている。フラッシュROM208やROM207には、OSなどのシステムソフトウェアやアプリケーションソフトウェアやOS220が制御するテーブルが記憶されている。
 RAM206は、各CPUのワークエリアとして使用される。フラッシュROMコントローラ209は、各CPUの制御にしたがってフラッシュROM210に対するデータのリード/ライトを制御する。フラッシュROM210は、フラッシュROMコントローラ209の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム200を使用するユーザがI/F213を通して取得した画像データ、映像データなどである。フラッシュROM210は、たとえば、メモリカード、SDカードなどを採用することができる。
 DVFS制御機構205は、各CPUに電源電圧やクロックを供給する。たとえば、DVFS制御機構205がCPU201~CPU204へ供給可能な電源電圧の値は0.1[V]刻みで1.0[V]~1.6[V]と0[V]である。DVFS制御機構205からCPU201~CPU204へそれぞれ電源配線VDD1~VDD4を介して電源電圧が供給される。DVFS制御機構205がCPU201~CPU204へ供給可能なクロックの周波数は100[MHz]刻みで100[MHz]~500[MHz]と0[Hz]である。DVFS制御機構205からCPU201~CPU204へそれぞれクロック配線CLK1~CLK4を介してクロックが供給される。供給される電源電圧が0[V]またはクロックの周波数が0[Hz]の場合、CPUは停止状態となる。
 ディスプレイ211は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。さらに、ディスプレイ211は、タッチパネルであり、数字、各種指示などの入力のためのキーを有し、データの入力をおこなってもよい。ディスプレイ211は、たとえば、TFT液晶ディスプレイ211などを採用することができる。キーボード212は、数字、各種指示などの入力のためのキーを有し、データの入力をおこなう。また、キーボード212は、タッチパネル式の入力パッドやテンキーなどであってもよい。
 I/F213は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F213は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F213には、たとえば、モデムやLANアダプタなどを採用することができる。
(設計支援装置のハードウェア例)
 図3は、実施の形態1にかかる設計支援装置のハードウェア例を示すブロック図である。設計支援装置300は、マルチコアプロセッサシステム200を有する機器に接続可能であって、処理時間や消費電力を計測する。図3において、設計支援装置300は、CPU301と、ROM302と、RAM303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、ディスプレイ308と、I/F309と、キーボード310と、マウス311と、スキャナ312と、プリンタ313と、を備えている。また、各部はバス315によってそれぞれ接続されている。
 ここで、CPU301は、設計支援装置300の全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
 光ディスクドライブ306は、CPU301の制御にしたがって光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
 ディスプレイ308は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ308は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
 I/F309は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク314に接続され、このネットワーク314を介して他の装置に接続される。そして、I/F309は、ネットワーク314と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F309には、たとえばモデムやLANアダプタなどを採用することができる。
 キーボード310は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス311は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
 スキャナ312は、画像を光学的に読み取り、設計支援装置300内に画像データを取り込む。なお、スキャナ312は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ313は、画像データや文書データを印刷する。プリンタ313には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(実施の形態1にかかる設計支援装置300の機能ブロック図)
 図4は、実施の形態1にかかる設計支援装置300の機能ブロック図を示す説明図である。設計支援装置300は、測定部401と、周波数算出部402と、消費電力算出部403と、決定部404と、出力部405と、を有している。具体的には、たとえば、測定部401~出力部405を有するプログラムがROM302、磁気ディスク305、光ディスク307などの記憶装置に記憶されている。CPU301が該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、測定部401~出力部405の処理が実行される。
 測定部401は、マルチコアプロセッサシステム200を有する機器で対象イベントを発生させ、稼働CPU数ごとに基準周波数における対象イベントに応じた処理を実行時の稼働時間と延べ空き時間を測定する。空き時間とはOS220が各CPUに割り振る処理が無い状態の時間のことで、マルチコアプロセッサシステム200の場合、空き時間はそれぞれのCPUでばらばらに発生する。そのため、測定部401は、典型的な処理をしている間に稼働しているすべてのCPUで発生する空き時間の合計を延べ空き時間として測定する。マルチコアプロセッサシステム200において稼働時間と空き時間はOS220が管理しているので、設計支援装置300はOS220に稼働時間と延べ空き時間を測定させる。
 図5は、測定データの一例を示す説明図である。利用シーン1測定データ501は、CPU数の項目と稼働時間の項目と待ち時間の項目とを有している。マルチコアプロセッサシステム200のCPUが4個であるため、CPU数の項目には1~4が登録されている。稼働時間の項目には利用シーン1での各CPU数での稼働時間が登録され、待ち時間の項目には利用シーン1での各CPU数での空き時間が登録される。
 利用シーン2測定データ502は、CPU数の項目と稼働時間の項目と待ち時間の項目とを有している。マルチコアプロセッサシステム200のCPUが4個であるため、CPU数の項目には1~4が登録されている。稼働時間の項目には利用シーン2での各CPU数での稼働時間が登録され、待ち時間の項目には利用シーン2での各CPU数での空き時間が登録される。利用シーン1測定データ501や利用シーン2測定データ502はROM302、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
 図4に戻って、周波数算出部402は、測定部401により測定された指定CPU数での稼働時間と測定部401により測定されたCPU数ごとの稼働時間との比率により、指定CPU数での稼働時間を満たすことができる周波数をCPU数ごとに算出する。ここでは、指定CPU数を1とする。具体的には、たとえば、CPUが、下記式(1)を用いてCPU数ごとに周波数を算出する。
 周波数=基準周波数×測定した稼働時間/指定CPU数での稼働時間・・・(1)
 消費電力算出部403は、周波数算出部402によりCPU数ごとに算出された周波数に応じた記憶装置に記憶された単位時間当たりの1CPUの消費電力を用いて、CPU数ごとに消費電力量を算出する。決定部404は、消費電力算出部403によりCPU数ごとに算出された消費電力量の中で最小の消費電力量であるCPU数を対象イベントの稼働CPU数に決定する。出力部405は、決定部404により決定された稼働CPU数と算出された周波数とを対象イベントの識別情報に関連付けて出力する。
 図6は、DVFS制御情報テーブル600の一例を示す説明図である。DVFS制御情報テーブル600は、出力結果の一例である。DVFS制御情報テーブル600には、指定されたイベントごとの稼働CPU数と周波数と電源電圧の値が定義されている。DVFS制御情報テーブル600は、イベントの項目601と、稼働CPU数の項目602と、周波数の項目603と、電源電圧の項目604と、を有している。
 イベントの項目601には、利用シーン移行条件が登録される。ここでは、イベントの項目601には、メーラの起動、動画再生ソフトウェアの起動、ブラウザの起動、端末の閉、キーYの押下が登録されている。稼働CPU数の項目602には稼働CPU数が登録されている。周波数の項目603には稼働CPUへ供給するクロックの周波数が登録されている。電源電圧の項目604には稼働中のCPUへ供給する電源電圧が登録されている。
(実施の形態1にかかる設計支援装置300による設計支援処理手順)
 図7は、実施の形態1にかかる設計支援装置300による設計支援処理手順の一例を示すフローチャートである。まず、設計支援装置300が、稼働CPU数が未決定な利用シーンから任意の利用シーンを設定し(ステップS701)、稼働CPU数=1とし(ステップS702)、稼働CPU数と利用シーンを設定して機器を起動する(ステップS703)。ここで、機器は、上述のマルチコアプロセッサシステム200を有している。設計支援装置300が、稼働時間と延べ空き時間を測定し(ステップS704)、シングルコアでの性能を下回らない最小の周波数を算出する(ステップS705)。
 設計支援装置300が、算出した周波数でCPUが動作する最小の電源電圧と算出した周波数での消費電力を測定し(ステップS706)、算出した周波数での消費電力量を算出する(ステップS707)。設計支援装置300が、稼働CPU数=稼働CPU数+1とし(ステップS708)、稼働CPU数>全CPU数であるか否かを判断する(ステップS709)。設計支援装置300が、稼働CPU数>全CPU数でないと判断した場合(ステップS709:No)、ステップS702へ戻る。
 設計支援装置300が、稼働CPU数>全CPU数であると判断した場合(ステップS709:Yes)、消費電力量が最小となるCPU数を決定し(ステップS710)、全利用シーンでCPU数を決定したか否かを判断する(ステップS711)。設計支援装置300が、全利用シーンでCPU数を決定していないと判断した場合(ステップS711:No)、ステップS701へ戻る。
 設計支援装置300が、全利用シーンでCPU数を決定したと判断した場合(ステップS711:Yes)、決定結果を出力し(ステップS712)、一連の処理を終了する。出力形式としては、たとえば、ディスプレイ308への表示、プリンタ313への印刷出力、I/F309による外部装置への送信がある。また、RAM303、磁気ディスク305、光ディスク307などの記憶領域に記憶することとしてもよい。
(実施の形態2)
 まず、実施の形態2では、実施の形態1で決定した各利用シーンでの稼働CPU数とクロック周波数を用いて、利用シーンが切り替わる都度、該利用シーンに応じた稼働CPU数とクロックの周波数で利用シーンに応じた処理を動作させる例を示す。
(実施の形態2にかかるマルチコアプロセッサシステム200の機能ブロック図)
 図8は、実施の形態2にかかるマルチコアプロセッサシステム200の機能ブロック図である。実施の形態2にかかるマルチコアプロセッサシステム200は、記憶部801と、イベント検出部802と、シーン決定部803と、DVFS制御部804と、スケジューリング部805と、を有している。
 具体的には、たとえば、イベント検出部802~スケジューリング部805を有するプログラムがROM207などの記憶装置に記憶されている。CPUが該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、イベント検出部802~スケジューリング部805の処理が実行される。ここでは、該プログラムはOS220である。
 記憶部801は、複数のイベントのイベントごとに指定数のCPUで実行した場合の性能を保ち、消費電力量が最も少なくなるCPU数と周波数と電源電圧の値を記憶する。具体的には、たとえば、上述のDVFS制御情報テーブル600がROM207やフラッシュROM208に記憶されている。
 イベント検出部802はイベントを検出し、シーン決定部803は、イベント検出部802により検出されたイベントがDVFS制御情報テーブル600に登録されているイベントに含まれているか否かを判断する。イベント検出部802により検出されたイベント(対象イベント)がDVFS制御情報テーブル600に登録されているイベントであると判断された場合、DVFS制御部804は、記憶部801に記憶された対象イベントに関する稼働CPU数を取得する。DVFS制御部804は、記憶部801に記憶された対象イベントに関する周波数を取得する。DVFS制御部804は、取得した稼働CPU数分のCPUへ取得した周波数のクロックを供給する。
 DVFS制御部804は、マルチコアプロセッサのうちの稼働中のCPUの数が稼働CPU数分のCPUより多い場合、稼働中のCPUから稼働CPU数を超える数分のCPUを停止させる。DVFS制御部804は、マルチコアプロセッサのうちの稼働中のCPUの数が稼働CPU数分のCPUより少ない場合、不足分のCPUを起動させる。そして、スケジューリング部805は、稼働CPU数分のCPUで対象イベントに応じた処理を実行する。以上を踏まえて詳細な具体例を説明する。
 図9は、イベントの発生例を示す説明図である。図9では、CPU201が稼働中であるが、CPU202~CPU204は停止中である。ユーザがメーラを起動すると、OS220が(1)メーラの起動指示を検出する。OS220が、(2)DVFS制御テーブル600のイベントの項目601にメーラの起動が登録されているかを確認する。DVFS制御テーブル600のイベントの項目601にメーラの起動が登録されているため、OS220が利用シーン移行条件を満たしたと判断する。
 OS220が、(3)DVFS制御情報テーブル600からメーラ起動に関する稼働CPU数とクロックの周波数と電源電圧の値とを取得する。OS220が、現在稼働中のCPUの数と取得した稼働CPU数とを比較することで、稼働中のCPUの数に変更が必要か否かを判断する。現在稼働中のCPUの数は1であり、取得した稼働CPU数は2である。よって、不足するCPU数は1である。
 OS220が、稼働中のCPUの数を1つ増加させるため、停止中のCPUから起動させるCPUを決定する。ここでは、CPU202が起動するCPUに決定される。OS220が、(4)取得した電源電圧の値と取得したクロックの周波数とをCPU201とCPU202に与えるようにDVFS制御機構205を制御する。
 図10は、稼働中のCPUの数が変化する例を示す説明図である。電源配線VDD1と電源配線VDD2の電源電圧の値が1.3[V]であり、クロック配線CLK1とクロック配線CLK2のクロックの周波数が300[MHz]である。電源配線VDD3と電源配線VDD4の電源電圧の値が0[V]であり、クロック配線CLK3とクロック配線CLK4のクロックの周波数が0[Hz]である。そして、OS220がメーラを起動する。
(実施の形態2にかかるOS220による制御処理手順)
 図11は、実施の形態2にかかるOS220による制御処理手順の一例を示すフローチャートである。まず、OS220が、イベントを検出したか否かを判断する(ステップS1101)。OS220が、イベントを検出していないと判断した場合(ステップS1101:No)、ステップS1101へ戻る。
 OS220が、イベントを検出したと判断した場合(ステップS1101:Yes)、DVFS制御情報テーブル600の利用シーン移行条件をチェックする(ステップS1102)。OS220が、検出したイベントが利用シーン移行条件に合致するか否かを判断し(ステップS1103)、合致しないと判断した場合(ステップS1103:No)、ステップS1112へ移行する。
 OS220が、検出したイベントが利用シーン移行条件に合致すると判断した場合(ステップS1103:Yes)、DVFS制御情報テーブル600から検出したイベントに対応する稼働CPU数、クロックの周波数、電源電圧の値を取得する(ステップS1104)。つぎに、OS220が、稼働CPU数に変更があるか否かを判断し(ステップS1105)、稼働CPU数に変更がないと判断した場合(ステップS1105:No)、ステップS1111へ移行する。
 OS220が、稼働CPU数に変更があると判断した場合(ステップS1105:Yes)、稼働CPU数が増加したか否かを判断する(ステップS1106)。OS220が、稼働CPU数が増加したと判断した場合(ステップS1106:Yes)、停止中のCPUから起動させるCPU(起動CPU)を決定する(ステップS1107)。OS220が、起動CPUと稼働中のCPUに取得した電源電圧の値と周波数のクロックとを供給させる制御をおこない(ステップS1108)、ステップS1112へ移行する。
 OS220が、稼働CPU数が増加していないと判断した場合(ステップS1106:No)、停止させるCPU(停止CPU)を決定し(ステップS1109)、停止CPUの電源供給、周波数入力を停止させる制御をおこなう(ステップS1110)。OS220が、稼働中のCPUに取得した電源電圧の値と周波数のクロックとを供給させる制御をおこなう(ステップS1111)。ステップS1103のNoの場合、ステップS1108、またはステップS1111のつぎに、OS220が、検出したイベントに応じた処理を稼働中のCPUで実行し(ステップS1112)、ステップS1101へ移行する。
(実施の形態3)
 実施の形態3では、プログラムごとに基準周波数におけるCPU数ごとの処理時間を測定し、周波数ごとに単位時間当たりの1コアの消費電力量を測定する例を示す。
(実施の形態3にかかる設計支援装置300の機能ブロック図)
 図12は、設計支援装置300の機能ブロック図を示す説明図である。設計支援装置300は測定部1201と出力部1202とを有している。具体的には、たとえば、測定部1201と出力部1202を有するプログラムがROM302、磁気ディスク305、や光ディスク307などの記憶装置に記憶されている。CPU301が該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、測定部1201と出力部1202の処理が実行される。
 測定部1201は、マルチコアプロセッサシステム200を有する機器を用いて、プログラムごとに基準周波数におけるCPU数ごとの稼働時間を測定する。出力部1202は、測定結果とプログラムの識別情報を関連付けて出力する。図13に出力例を示す。
 図13は、稼働時間テーブル例を示す説明図である。稼働時間テーブル1300は、たとえば、メーラに関する稼働時間が登録されたテーブルであり、CPU数ごとに該CPU数でメーラを実行した際にかかる稼働時間が登録されている。稼働時間テーブル1310は、たとえば、ブラウザに関する稼働時間が登録されたテーブルであり、CPU数ごとに該CPU数でメーラを実行した際にかかる稼働時間が登録されている。
 稼働時間テーブル1300は、CPU数の項目1301と、稼働時間の項目1302と、空き時間の項目1303と、を有している。CPU数の項目1301には1~4までが登録されている。稼働時間の項目1302には、CPU数の項目1301に登録されたCPU数ごとに該CPU数でメーラを実行した際にかかる単位時間当たりの稼働時間が登録されている。空き時間の項目1303には、CPU数の項目1301に登録されたCPU数ごとに該CPU数分のCPUでメーラを実行した際に発生する延べ空き時間が登録されている。
 稼働時間テーブル1310は、CPU数の項目1311と、稼働時間の項目1312と、空き時間の項目1313と、を有している。CPU数の項目1311には1~4までが登録されている。稼働時間の項目1312には、CPU数の項目1311に登録されたCPU数ごとに該CPU数でブラウザを実行した際にかかる単位時間当たりの稼働時間が登録されている。空き時間の項目1313には、CPU数の項目1311に登録されたCPU数ごとに該CPU数分のCPUでブラウザを実行した際に発生する延べ空き時間が登録されている。
 図12に戻って、測定部1201は、周波数ごとに単位時間当たりの1CPUの消費電力量を測定する。出力部1203は、測定結果を出力する。図14に出力例を示す。
 図14は、周波数・電力テーブル例を示す説明図である。周波数・電力テーブル1400は、周波数の項目1401と、電源電圧の項目1402と、1CPU当たりの消費電力の項目1403と、を有している。周波数の項目1401には、各CPUに供給可能なクロックの周波数が登録されている。ここでは、周波数の項目1401には、100[MHz]、200[MHz]、300[MHz]、400[MHz]、500[MHz]が登録されている。
 電源電圧の項目1402には、周波数の項目1401に登録された周波数でクロックが供給される際に必要な電源電圧の値が登録されている。たとえば、周波数・電力テーブル1400では、供給されるクロックの周波数が500[MHz]の場合、供給される電源電圧の値は1.6[V]以上でなければ、CPUが動作しないことを示している。
 1CPU当たりの消費電力の項目1403には、供給されるクロックの周波数が周波数の項目1401に登録された値で、かつ供給される電源電圧の値が電源電圧の項目1402に登録された値である場合の1CPU当たりの消費電力の値が登録されている。たとえば、周波数・電力テーブル1400では、CPUに供給されるクロックの周波数が200[MHz]で、CPUに供給される電源電圧の値が1.1[V]である場合、1CPU当たりの消費電力の値は40[mW]であることを示している。
(実施の形態3にかかる設計支援装置300による設計支援処理手順)
 図15は、実施の形態3にかかる設計支援装置300による設計支援処理手順の一例を示すフローチャートである。まず、設計支援装置300が、未測定なプログラムから任意のプログラムを選択し(ステップS1501)、稼働CPU数=1とし(ステップS1502)、稼働CPU数を設定したプログラムを起動する(ステップ1503)。そして、設計支援装置300が、単位時間当たりの稼働時間と延べ空き時間を測定する(ステップS1504)。
 設計支援装置300が、稼働CPU数=稼働CPU数+1とし(ステップS1505)、稼働CPU数>全CPU数であるか否かを判断する(ステップS1506)。設計支援装置300が、稼働CPU数>全CPU数でないと判断した場合(ステップS1506:No)、ステップS1502へ戻る。設計支援装置300が、稼働CPU数>全CPU数であると判断した場合(ステップS1506:Yes)、全プログラムで測定済か否かを判断する(ステップS1507)。
 設計支援装置300が、全プログラムで測定済でないと判断した場合(ステップS1507:No)、ステップS1501へ戻る。設計支援装置300が、全プログラムで測定済であると判断した場合(ステップS1507:Yes)、CPUの動作周波数を設定し(ステップS1508)、設定した動作周波数でCPUが動作する最小の電源電圧と消費電力を測定する(ステップS1509)。
 設計支援装置300が、設定可能な全動作周波数で測定したか否かを判断する(ステップS1510)。設計支援装置300が、設定可能な全動作周波数で測定していないと判断した場合(ステップS1510:No)、ステップS1508へ戻る。設計支援装置300が、設定可能な全動作周波数で測定したと判断した場合(ステップS1510:Yes)、測定結果を出力する(ステップS1511)。
(実施の形態4)
 つぎに、実施の形態4では、複数のプログラムが同時に実行された場合において、1CPUで実行した場合の性能を保ちつつ、最も消費電力が少なくなるCPU数と周波数を特定し、該CPU数と周波数で複数のプログラムを動作させる例を示す。実施の形態4では、実施の形態1~3で説明した構成と同一構成については同一符号を付し、該同一符号が付された構成の詳細な説明を省略する。
(実施の形態4にかかるマルチコアプロセッサシステム200の機能ブロック図)
 図16は、実施の形態4にかかるマルチコアプロセッサシステム200の機能ブロック図である。マルチコアプロセッサシステム200は、記憶部1601と、プロセス管理部1602と、稼働CPU数決定部1603と、DVFS制御部1604と、スケジューリング部1605と、を有している。
 具体的には、たとえば、プロセス管理部1602~スケジューリング部1605を有するプログラムがROM207やフラッシュROM208などの記憶装置に記憶されている。CPUが該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、プロセス管理部1602~スケジューリング部1605の処理が実行される。ここでは、該プログラムはOS220である。
 記憶部1601は、プログラムごとに基準周波数におけるCPU数ごとの稼働時間を記憶し、周波数ごとに単位時間当たりの1CPUの消費電力量を記憶する。具体的には、たとえば、ROM207やフラッシュROM208は、稼働時間テーブル1300や稼働時間テーブル1310や周波数・電力テーブル1400を記憶している。
 プロセス管理部1602は、対象プログラムの起動を検出する。稼働CPU数決定部1603は、対象プログラムと実行中のプログラムを実行する稼働CPU数を決定する。稼働CPU数決定部1603は、抽出部1611と、周波数算出部1612と、消費電力算出部1613と、決定部1614と、を有している。抽出部1611は、プロセス管理部1602により対象プログラムの起動が検出された場合、マルチコアプロセッサで実行中のプログラムの稼働時間をCPU数ごとに記憶部1601から抽出する。抽出部1611は、対象プログラムの稼働時間をCPU数ごとに記憶部1601から抽出する。
 周波数算出部1612は、抽出部1611によりCPU数ごとに抽出された実行中のプログラムの稼働時間と対象プログラムの稼働時間との合計稼働時間との比率により、指定CPU数の合計稼働時間を満たす周波数をCPU数ごとに算出する。
 消費電力算出部1613は、周波数算出部1612によりCPU数ごとに算出された周波数に応じた記憶部1601に記憶された単位時間当たりの1CPUの消費電力に基づいて、CPU数ごとに消費電力量を算出する。決定部1614は、消費電力算出部1613によりCPU数ごとに算出された消費電力量の中で最少の消費電力量であるCPU数を稼働CPU数に決定する。
 DVFS制御部1604は、稼働CPU数決定部1603により決定されたCPU数分のCPUへ、稼働CPU数決定部1603により算出された周波数のクロックを供給する。DVFS制御部1604は、マルチコアプロセッサのうちの稼働中のCPUの数が決定されたCPU数より多い場合、稼働中のCPUから稼働CPU数を超える数分のCPUを停止させる。DVFS制御部1604は、マルチコアプロセッサのうちの稼働中のCPUの数が、決定されたCPU数より少ない場合、不足分のCPUを起動させる。そして、スケジューリング部1605は、決定されたCPU数分のCPUで対象プログラムと実行中のプログラムを実行する。以上を踏まえて詳細に説明する。
 図17は、複数のプログラムが同時に実行される例を示す説明図である。マルチコアプロセッサシステム200ではブラウザが実行中であり、稼働CPU数は4である。利用者がメーラを起動すると、OS220がメーラの起動指示を検出する。そして、OS220が、実行中のプログラムの識別情報を取得する。OS220が、該識別情報を取得したプログラムに対応する稼働時間テーブルと起動指示を検出したプログラムに対応する稼働時間テーブルとを取得する。ここでは、メーラに関する稼働時間テーブル1300とブラウザに関する稼働時間テーブル1310がROM207やフラッシュROM208などの記憶装置から読み出される。
 図18は、合計稼働時間を示す説明図である。OS220が、稼働時間テーブル1300と稼働時間テーブル1310を用いてメーラとブラウザとの合計稼働時間をCPU数ごとに算出する。CPU数が1の場合、合計稼働時間は165[ms]である。CPU数が2の場合、合計稼働時間は125[ms]である。CPU数が3の場合、合計稼働時間は100[ms]である。CPU数が4の場合、合計稼働時間は75[ms]である。
 図19は、消費電力が最も低くなるCPU数を特定する例を示す説明図である。つぎに、OS220が、各CPU数において、CPU数が1の場合の稼働時間を維持可能なクロックの周波数を算出する。具体的には、たとえば、OS220が、下記式(2)を用いて各CPU数におけるクロックの周波数を算出する。
 周波数=基準周波数×各CPU数での全稼働時間/指定CPU数での全稼働時間・・・(2)
 たとえば、ここでは、基準周波数を500[MHz]とする。CPU数が2の場合、式(2)による算出結果は378[MHz]であり、クロックの周波数は400[MHz]となる。CPU数が3の場合、式(2)による算出結果は303[MHz]であり、クロックの周波数は400[MHz]となる。CPU数が4の場合、式(2)による算出結果は227[MHz]であり、クロックの周波数は300[MHz]となる。
 OS220が、周波数・電力テーブル1400を用いて、各CPU数で実行した場合の消費電力の値を算出する。400[MHz]の場合の1CPU当たりの消費電力が85[mW]であるため、CPU数が2の場合、全消費電力は85×2で170[mW]である。CPU数が3の場合、全消費電力は85×3で255[mW]である。300[MHz]の場合の1CPU当たりの消費電力が60[mW]であるため、CPU数が4の場合、全消費電力は60×4で240[mW]である。よって、CPU数が1の場合での性能と同一性能で消費電力が最も低くなるCPU数は2であるため、OS220が稼働CPU数を2に決定する。
 図20は、稼働CPU数の変更例を示す説明図である。OS220が、稼働CPU数を減少させるため、停止させる停止CPUを決定する。ここでは、CPU203とCPU204を停止CPUとする。OS220が、DVFS制御機構205からCPU203とCPU204へのクロック・電源電圧の供給を停止させる。OS220が、CPU201とCPU202へ供給するクロックの周波数を400[MHz]に設定し、電源電圧の値を1.4[V]に設定する。
(実施の形態4にかかるOS220による制御処理手順)
 図21と図22は、実施の形態4にかかるOS220による制御処理手順の一例を示すフローチャートである。まず、OS220が、プロセスの起動または終了を検出したか否かを判断し(ステップS2101)、プロセスの起動および終了を検出していないと判断した場合(ステップS2101:No)、ステップS2101へ戻る。OS220が、プロセスの起動または終了を検出したと判断した場合(ステップS2101:Yes)、稼働中のすべてのプロセスを特定する(ステップS2102)。
 OS220が、特定したプロセスに対応する稼働時間テーブルを参照し(ステップS2103)、各CPU数における稼働時間の全プロセス分の総計を算出する(ステップS2104)。OS220が、周波数・電力テーブル1400から算出した各CPU数での周波数に対応する1CPU当たりの消費電力の値を取得し(ステップS2105)、各CPU数における全消費電力の値を算出する(ステップS2106)。
 OS220が、算出した全消費電力の値が最小となるCPU数を稼働CPU数に決定し(ステップS2107)、稼働CPU数に変更があるか否かを判断する(ステップS2108)。OS220が、稼働CPU数に変更がないと判断した場合(ステップS2108:No)、ステップS2101へ移行する。
 OS220が、稼働CPU数に変更があると判断した場合(ステップS2108:Yes)、稼働CPU数が増加したか否かを判断する(ステップS2109)。OS220が、稼働CPU数が増加したと判断した場合(ステップS2109:Yes)、停止中のCPUから起動させるCPU(起動CPU)を決定する(ステップS2110)。OS220が、起動CPUと稼働中のCPUに取得した電源電圧の値と周波数とを供給させる制御を行い(ステップS2111)、ステップS2101へ移行する。
 OS220が、稼働CPU数が増加していないと判断した場合(ステップS2109:No)、停止させるCPU(停止CPU)を決定し(ステップS2112)、停止CPUの電源供給、周波数入力を停止させる制御をおこなう(ステップS2113)。OS220が、稼働中有のCPUに取得した電源電圧の値と周波数とを供給させる制御を行い(ステップS2114)、ステップS2101へ移行する。
 以上実施の形態1,3で説明したように、設計支援方法によれば、イベントごとに消費電力量が最小となる稼働CPU数とクロックの周波数の組み合わせを特定する。これにより、消費電力量が最小となる稼働CPU数とクロックの周波数でシステムを運用することができる。
 また、イベントごとにイベントに応じた処理を1CPUで実行した場合の稼働時間と基準周波数とに基づいてクロックの周波数を算出する。これにより、1CPUで実行した場合の性能を維持することができる。
 以上実施の形態2で説明したように、スケジューリング方法、およびシステムによれば、所定イベントごとに稼働CPU数とクロックの周波数とをメモリに記憶する。そして、所定イベントが発生する都度、稼働CPU数と周波数を切り替えて、該イベントに応じた処理を実行する。これにより、消費電力が最も少ない稼働CPU数とクロック周波数の組み合わせにより、イベントに応じた処理を実行でき、消費電力を減少させることができる。
 また、稼働中のCPUの数が稼働CPU数よりも多い場合、稼働中のCPUから稼働CPU数を超える数分のCPUを停止させることにより、消費電力が最小となる最適なCPU数でシステムを運用することができる。
 また、稼働中のCPUの数が稼働CPU数分より少ない場合、不足分のCPUを起動させることにより、1CPUで実行した場合の性能を維持することができる。
 また、所定イベントごとに稼働CPU数とクロックの周波数と電源電圧の値とをメモリに記憶し、所定イベントが発生する都度、稼働CPU数と周波数と電源電圧の値とを切り替えて、該イベントに応じた処理を実行する。消費電力は周波数と電源電圧の二乗に比例する。クロックの周波数を下げることにより、電源電圧を下げることができるため、消費電力量を減少させることができる。
 以上実施の形態4で説明したように、スケジューリング方法、およびシステムによれば、プログラムごとに各CPU数分のCPUで実行した場合の稼働時間と、周波数ごとに1CPU当たりの消費電力量を記憶する。そして、複数のプログラムが同時に実行された場合において、1CPUで実行した場合の性能を保ちつつ、最も消費電力が少なくなる最適な稼働CPU数と周波数を特定し、該稼働CPU数と周波数で複数のプログラムを動作させる。これにより、消費電力量を削減することができる。
 また、稼働中のCPUの数が稼働CPU数よりも多い場合、稼働中のCPUから稼働CPU数を超える数分のCPUを停止させることにより、消費電力が最小となる最適なCPU数でシステムを運用することができる。
 また、稼働中のCPUの数が稼働CPU数分より少ない場合、不足分のCPUを起動させることにより、1CPUで実行した場合の性能を維持することができる。
 207 ROM
 208 フラッシュROM
 401 測定部
 402 周波数算出部
 403 消費電力算出部
 404 決定部
 405 出力部
 801,1601 記憶部
 802 イベント検出部
 803 シーン決定部
 804,1604 DVFS制御部
 805,1605 スケジューリング部
 1602 プロセス管理部
 1603 稼働CPU数決定部
 200 マルチコアプロセッサシステム
 300 設計支援装置

Claims (9)

  1.  第1処理から第2処理への変更を検出し、
     メモリから前記第2処理を実行するCPUの数と動作周波数とを取得し、
     前記CPUの数に基づいて、稼働中のCPUを停止しまたは停止中のCPUを起動し、
     前記第2処理を実行するCPUに前記動作周波数を割り当てること
     を特徴とするスケジューリング方法。
  2.  前記稼働中のCPUの数が前記CPUの数より多い場合、前記稼働中のCPUから前記CPUの数を超える数分のCPUを停止させること
     を特徴とする請求項1に記載のスケジューリング方法。
  3.  前記稼働中のCPUの数が前記CPUの数分より少ない場合、不足分のCPUを起動させること
     を特徴とする請求項1に記載のスケジューリング方法。
  4.  さらに、前記メモリから前記第2処理を実行するCPUの数と動作周波数と電源電圧の値を取得し、
     前記CPUの数に基づいて、動作中のCPUを停止しまたは停止中のCPUを起動し、
     前記第2処理を実行するCPUに前記動作周波数と前記電源電圧の値を割り当てること
     を特徴とする請求項1乃至請求項3のいずれか一に記載のスケジューリング方法。
  5.  第1処理を実行するときの、第1数個のCPUの第1稼働時間と第1停止時間とを測定し、
     第1最小動作周波数より大きい第1動作周波数を設定し、
     前記第1稼働時間と前記第1停止時間とに基づいて、前記第1動作周波数で動作する前記第1数個のCPUの第1消費電力を算出し、
     前記第1処理を実行するときの、前記第1数個とは異なる第2数個のCPUの第2稼働時間と第2停止時間とを測定し、
    第2最小動作周波数より大きい第2動作周波数を設定し、
     前記第2稼働時間と前記第2停止時間とに基づいて、前記第2動作周波数で動作する前記第2数個のCPUの第2消費電力を算出し、
     前記第1消費電力と前記第2消費電力との比較結果に基づいて、前記第1処理実行時のCPUの数を決定すること
     を特徴とする設計支援方法。
  6.  前記第1最小動作周波数は、前記第1処理を1個のCPUで処理するときの稼働時間と前記第1稼働時間と所定動作周波数とに基づいて算出され、
     前記第2最小動作周波数は、前記第1処理を1個のCPUで処理するときの稼働時間と前記第2稼働時間と前記所定動作周波数とに基づいて算出されること
     を特徴とする請求項5に記載の設計支援方法。
  7.  複数のCPUと、
     複数の処理のそれぞれについて処理を実行するCPUの数と動作周波数とを記憶するメモリと、
     前記CPUの数に基づいて、動作中のCPUを停止しまたは停止中のCPUを起動するスケジューリング部と、
     前記CPUの数分のCPUに前記動作周波数を設定する制御部と、
     を含むことを特徴とするシステム。
  8.  前記スケジューリング部は、
     前記稼働中のCPUの数が前記CPUの数より多い場合、前記稼働中のCPUから前記CPUの数を超える数分のCPUを停止すること
     を特徴とする請求項7に記載のシステム。
  9.  前記スケジューリング部は、
     前記稼働中のCPUの数が前記CPUの数分より少ない場合、不足分のCPUを起動すること
     を特徴とする請求項7に記載のシステム。
PCT/JP2011/052953 2011-02-10 2011-02-10 スケジューリング方法、設計支援方法、およびシステム WO2012108058A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2012556744A JP5713029B2 (ja) 2011-02-10 2011-02-10 スケジューリング方法、設計支援方法、およびシステム
PCT/JP2011/052953 WO2012108058A1 (ja) 2011-02-10 2011-02-10 スケジューリング方法、設計支援方法、およびシステム
CN2011800671392A CN103348324A (zh) 2011-02-10 2011-02-10 调度方法、设计辅助方法以及系统
US13/963,506 US20130326527A1 (en) 2011-02-10 2013-08-09 Scheduling method, system design support method, and system
US15/219,703 US20160334854A1 (en) 2011-02-10 2016-07-26 Scheduling method, system design support method, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/052953 WO2012108058A1 (ja) 2011-02-10 2011-02-10 スケジューリング方法、設計支援方法、およびシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/963,506 Continuation US20130326527A1 (en) 2011-02-10 2013-08-09 Scheduling method, system design support method, and system

Publications (1)

Publication Number Publication Date
WO2012108058A1 true WO2012108058A1 (ja) 2012-08-16

Family

ID=46638296

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/052953 WO2012108058A1 (ja) 2011-02-10 2011-02-10 スケジューリング方法、設計支援方法、およびシステム

Country Status (4)

Country Link
US (2) US20130326527A1 (ja)
JP (1) JP5713029B2 (ja)
CN (1) CN103348324A (ja)
WO (1) WO2012108058A1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014061141A1 (ja) * 2012-10-18 2014-04-24 トヨタ自動車株式会社 並列計算装置
JP2014119697A (ja) * 2012-12-19 2014-06-30 Panasonic Corp 画像処理装置、および画像処理方法
JP2014164361A (ja) * 2013-02-21 2014-09-08 Fujitsu Ltd 情報処理装置の制御方法、制御プログラム、情報処理装置
JP2014186522A (ja) * 2013-03-22 2014-10-02 Fujitsu Ltd 計算システム及びその電力管理方法
JP2014219788A (ja) * 2013-05-07 2014-11-20 富士通株式会社 情報処理装置、省電力化制御方法および省電力化制御プログラム
JP2015130730A (ja) * 2014-01-07 2015-07-16 日本電気株式会社 電力制御装置、電力制御方法、及びプログラム
JP2016527630A (ja) * 2013-07-18 2016-09-08 クアルコム,インコーポレイテッド チップ上のマルチプロセッサシステムにおけるアイドル状態最適化のためのシステムおよび方法
CN115016631A (zh) * 2021-11-22 2022-09-06 荣耀终端有限公司 进程调度方法和终端设备

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6375602B2 (ja) * 2013-09-18 2018-08-22 日本電気株式会社 消費電力を制御する情報処理装置、電力制御方法、及びそのためのプログラム
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9594660B2 (en) * 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
JP6072090B2 (ja) * 2015-01-16 2017-02-01 京セラドキュメントソリューションズ株式会社 情報処理装置、データ処理方法
KR20180078558A (ko) * 2016-12-30 2018-07-10 삼성전자주식회사 시스템 온 칩의 구동 방법, 이를 수행하는 시스템 온 칩 및 이를 포함하는 전자 시스템
US10725819B2 (en) * 2018-05-18 2020-07-28 Acronis International Gmbh System and method for scheduling and allocating data storage
JP2022032339A (ja) * 2020-08-11 2022-02-25 富士通株式会社 電力制御装置、及び、電力制御方法
KR20230036589A (ko) * 2021-09-06 2023-03-15 삼성전자주식회사 시스템-온-칩 및 그의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09138716A (ja) * 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
JP2005085164A (ja) * 2003-09-10 2005-03-31 Sharp Corp マルチプロセッサシステムの制御方法およびマルチプロセッサシステム
JP2006011548A (ja) * 2004-06-22 2006-01-12 Sony Computer Entertainment Inc プロセッサ、情報処理装置およびプロセッサの制御方法
JP2006344162A (ja) * 2005-06-10 2006-12-21 Mitsubishi Electric Corp 並列計算装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7318164B2 (en) * 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
US20100058086A1 (en) * 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
US9323306B2 (en) * 2008-12-03 2016-04-26 Telefonaktiebolaget Lm Ericsson (Publ) Energy based time scheduler for parallel computing system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09138716A (ja) * 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
JP2005085164A (ja) * 2003-09-10 2005-03-31 Sharp Corp マルチプロセッサシステムの制御方法およびマルチプロセッサシステム
JP2006011548A (ja) * 2004-06-22 2006-01-12 Sony Computer Entertainment Inc プロセッサ、情報処理装置およびプロセッサの制御方法
JP2006344162A (ja) * 2005-06-10 2006-12-21 Mitsubishi Electric Corp 並列計算装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014061141A1 (ja) * 2012-10-18 2014-04-24 トヨタ自動車株式会社 並列計算装置
CN104718531A (zh) * 2012-10-18 2015-06-17 丰田自动车株式会社 并行计算装置
JPWO2014061141A1 (ja) * 2012-10-18 2016-09-05 トヨタ自動車株式会社 並列計算装置
JP2014119697A (ja) * 2012-12-19 2014-06-30 Panasonic Corp 画像処理装置、および画像処理方法
JP2014164361A (ja) * 2013-02-21 2014-09-08 Fujitsu Ltd 情報処理装置の制御方法、制御プログラム、情報処理装置
JP2014186522A (ja) * 2013-03-22 2014-10-02 Fujitsu Ltd 計算システム及びその電力管理方法
JP2014219788A (ja) * 2013-05-07 2014-11-20 富士通株式会社 情報処理装置、省電力化制御方法および省電力化制御プログラム
JP2016527630A (ja) * 2013-07-18 2016-09-08 クアルコム,インコーポレイテッド チップ上のマルチプロセッサシステムにおけるアイドル状態最適化のためのシステムおよび方法
JP2015130730A (ja) * 2014-01-07 2015-07-16 日本電気株式会社 電力制御装置、電力制御方法、及びプログラム
CN115016631A (zh) * 2021-11-22 2022-09-06 荣耀终端有限公司 进程调度方法和终端设备

Also Published As

Publication number Publication date
JP5713029B2 (ja) 2015-05-07
CN103348324A (zh) 2013-10-09
US20160334854A1 (en) 2016-11-17
JPWO2012108058A1 (ja) 2014-07-03
US20130326527A1 (en) 2013-12-05

Similar Documents

Publication Publication Date Title
JP5713029B2 (ja) スケジューリング方法、設計支援方法、およびシステム
US9613393B2 (en) Closed loop CPU performance control
US9311152B2 (en) Methods and apparatuses for load balancing between multiple processing units
US8707300B2 (en) Workload interference estimation and performance optimization
KR100663864B1 (ko) 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법
JP4380986B2 (ja) クロック制御装置及びその記録媒体
WO2021013055A1 (zh) 数据处理的方法、装置及电子设备
US9715407B2 (en) Computer product, multicore processor system, and scheduling method
CN104239153A (zh) 多核cpu负载均衡的方法和装置
Mercati et al. A linux-governor based dynamic reliability manager for android mobile devices
CN105359057A (zh) 设置计算机参数使得电源工作在基于电源的功率效率峰值的范围内
CN110795238B (zh) 负载计算方法、装置、存储介质及电子设备
JP5534002B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
JP2012243219A (ja) コンピュータ機器及びその起動制御方法
Seo et al. Effectiveness analysis of dvfs and dpm in mobile devices
AU2013260722A1 (en) Scheduling interpreting and rasterising tasks in a multi-threaded RIP
JP5725040B2 (ja) マルチコアプロセッサシステム、およびスケジューリング方法
US20100242044A1 (en) Adaptable software resource managers based on intentions
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
JP5725169B2 (ja) システム、および検出方法
JP2002189539A (ja) ソフトウェア処理装置、プログラム及び記録媒体
JP5780296B2 (ja) スレッド処理方法、およびスレッド処理システム
CN105589544A (zh) 降低中央处理器能耗的方法、装置及终端
JP2008243049A (ja) 情報処理装置および同装置のメモリ制御方法
JP4517006B2 (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: 11858118

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012556744

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

Country of ref document: EP

Kind code of ref document: A1