WO2011121786A1 - マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム - Google Patents

マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム Download PDF

Info

Publication number
WO2011121786A1
WO2011121786A1 PCT/JP2010/055966 JP2010055966W WO2011121786A1 WO 2011121786 A1 WO2011121786 A1 WO 2011121786A1 JP 2010055966 W JP2010055966 W JP 2010055966W WO 2011121786 A1 WO2011121786 A1 WO 2011121786A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
core
apl
specific
computing
Prior art date
Application number
PCT/JP2010/055966
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 JP2012508002A priority Critical patent/JP5472449B2/ja
Priority to EP10848962.6A priority patent/EP2555112A4/en
Priority to CN201080065829XA priority patent/CN102822803A/zh
Priority to PCT/JP2010/055966 priority patent/WO2011121786A1/ja
Publication of WO2011121786A1 publication Critical patent/WO2011121786A1/ja
Priority to US13/630,526 priority patent/US9037888B2/en
Priority to US14/689,603 priority patent/US20150220362A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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 multi-core processor system that controls power, a power control method, and a power control program.
  • a baseband processor (hereinafter referred to as “BP”) is in charge of communication and call functions, and an application processor (hereinafter referred to as “APL”) is in charge of other multimedia processing. is doing.
  • the BP causes a DSP (Digital Signal Processor) to process voice codec processing for encoding and decoding voice used in the call function (see, for example, Non-Patent Documents 1 to 3).
  • the DSP is a processor that is created for the purpose of performing specific arithmetic processing at high speed, and is mainly used for audio processing, image processing, and the like.
  • the processor that controls the mobile phone is a heterogeneous multi-core processor system having processors with different processes of BP, APL, and DSP.
  • the APL may have a clock gear function as a function for changing the computing ability.
  • the clock gear function is a function that can change the frequency stepwise. In many cases, the clock gear function of APL can change the frequency in 3 to 5 stages. In this way, the APL can save power by changing the clock gear according to the multimedia processing being executed.
  • a CPU to which a program is assigned is selected depending on whether the power usage is an external power source or a battery drive.
  • a low-performance CPU that is in a power saving state is selected, and there is a problem that the execution speed of the program is always low even if there is room in the battery.
  • the number of floors that can be set with the clock gear is small, so a difference occurs between the computing capability of the multimedia processing being executed and the computing capability of the APL, There was a problem that a surplus of computing power occurred.
  • An object of the present invention is to provide a multi-core processor system, a power control method, and a power control program that reduce power surplus and save power in order to solve the above-described problems caused by the prior art.
  • the disclosed multi-core processor system is configured such that a specific software among a plurality of software is a specific process in another core different from the specific core executing the specific process. If it detects that other software that has the same function and is different from the specific software is running, and detects that other software is running on another core, Of the plurality of software, a required value of computing power between specific software and other software is extracted from a database storing the required value of computing power for each software, and the extracted specific software and other software are Judgment is made on whether the sum of the required values of computing power is less than or equal to that of other cores. Is determined to be less than or equal to the computing capacity value of the other cores, the specific software is assigned to the other cores, and if the specific software is assigned to the other cores, the specific cores must be suspended. To do.
  • This multi-core processor system, power control method, and power control program have the effect of reducing the surplus of computing power and saving power.
  • FIG. 1 is a block diagram showing a multi-core processor system 100.
  • FIG. FIG. 10 is an explanatory diagram showing transition of execution states of CPUs of the multi-core processor system 100. It is explanatory drawing of the execution condition and power consumption of each CPU in the state 302 of FIG. It is explanatory drawing of the execution state and power consumption of each CPU in the state 304 of FIG. It is explanatory drawing of the execution condition and power consumption of each CPU in the state 303 of FIG. 5 is an explanatory diagram illustrating an example of stored contents of a software capability request table 201.
  • FIG. 5 is a flowchart (part 1) illustrating a scheduling process of the multi-core processor system 100.
  • FIG. 6 is a flowchart (part 2) illustrating a scheduling process of the multi-core processor system 100. It is a flowchart which shows a PMU event acquisition process. It is a flowchart which shows an external interruption detection process. It is a flowchart which shows a codec result process. It is a flowchart which shows DSP starting request
  • FIG. 1 is a block diagram showing hardware of the multi-core processor system according to the present embodiment.
  • a multi-core processor system 100 includes a baseband processor (BP) 101, a PMU (Power Management Unit) 102, an application processor (APL) 103, and a DSP 104.
  • BP baseband processor
  • PMU Power Management Unit
  • APL application processor
  • a multi-core processor system is a computer system including a processor having a plurality of cores. 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.
  • the multi-core processor system 100 may be a heterogeneous multi-core processor system including a plurality of cores having different performances.
  • the multi-core processor system 100 includes a RAM (Random Access Memory) 107 accessible by the BP 101 and a RAM 108 accessible by the APL 103.
  • the multi-core processor system 100 includes a ROM (Read Only Memory) 109, a RAM 110, and a flash ROM 111.
  • the multi-core processor system 100 includes an antenna 105, an RF circuit 106, a display 112, and a keyboard 113 as input / output devices for users and other devices. Each unit is connected by a bus 114.
  • the BP 101 is a processor core that detects a call under the control of the RF circuit 106 and is in charge of communication and a call function. Further, the BP 101 according to the present embodiment distributes the voice codec processing accompanying the call to the APL 103 or the DSP 104 depending on whether or not there is a surplus in the calculation capability of the APL 103.
  • the PMU 102 is a device that manages power consumption for each device. In this embodiment, the PMU 102 causes the APL 103 and the DSP 104 to sleep.
  • APL 103 is a processor core in charge of multimedia processing.
  • the APL 103 is also in charge of the audio codec when there is a surplus in computing capacity.
  • the APL 103 may have a clock gear function as a function that can change the operating frequency of the APL 103 and the RAM 108.
  • the APL 103 can obtain a power saving effect by switching the clock gear according to the load of the software being executed. For example, the APL 103 can change the clock gear to 3 to 5 stages.
  • Specific examples of operating frequencies are 100 [MHz], 200 [MHz], and 600 [MHz].
  • Examples of power consumption corresponding to each operating frequency are 100 [mW] and 200 [mW]. 600 [mW].
  • the DSP 104 is a processor core in charge of the audio codec. There are PCM (Pulse Code Modulation) and ADPCM (Adaptive Differential Pulse Code Modulation) as audio codec formats. Although a dedicated RAM for the DSP 104 is not shown, a dedicated RAM for the DSP 104 may exist. Further, the multi-core processor system 100 may transfer the audio codec processing to the DSP 104 while the APL 103 accesses the RAM 108 and executes the audio codec processing. At that time, the DSP 104 may be connected so that the RAM 108 can be accessed in order to access the intermediate result of the audio codec stored in the RAM 108.
  • PCM Pulse Code Modulation
  • ADPCM Adaptive Differential Pulse Code Modulation
  • the antenna 105 transmits and receives radio signals.
  • the RF circuit 106 is a high-frequency processing unit, and receives data from a network such as the Internet via the antenna 105 and transmits data to the network.
  • the RF circuit 106 includes an A (Analog) / D (Digital) converter, a D / A converter, and the like, and converts data from the network into a digital signal, and converts data from the BP 101 into an analog signal. Or convert to
  • the ROM 109 stores a program such as a boot program.
  • the RAM 110 is used as a work area for the BP 101, the PMU 102, the APL 103, and the DSP 104.
  • the flash ROM 111 stores system software such as an OS (Operating System), application software, and the like.
  • the display 112 displays data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • data such as a document, an image, and function information as well as a cursor, an icon, or a tool box.
  • a TFT liquid crystal display can be adopted as the display 112.
  • the keyboard 113 includes keys for inputting characters, numbers, various instructions, and the like, and inputs data.
  • the numeric keypad transmits an input from the user to the PMU 102 as an external interrupt.
  • FIG. 2 is a block diagram illustrating the multi-core processor system 100.
  • the multi-core processor system 100 includes a detection unit 202, an extraction unit 203, a surplus determination unit 204, an allocation unit 205, a suspension unit 206, a determination unit 207, a transition unit 208, a suspension notification unit 209, and codec processing.
  • a detection unit 210 and a codec processing distribution unit 211 are included.
  • the function (detection unit 202 to codec processing distribution unit 211) serving as the control unit realizes the function by executing one of the BP 101, the PMU 102, and the APL 103 with the program stored in the storage device. Examples of the storage device include the RAM 107, RAM 108, ROM 109, RAM 110, and flash ROM 111 shown in FIG.
  • the multi-core processor system 100 can access the software capability request table 201.
  • the software capability request table 201 stores a required value of computing capability for each software among a plurality of software. Since the APL 103 accesses the software capability request table 201, the software capability request table 201 is stored in the RAM 108 in FIG. 2, but may be stored in the RAM 110 or the like.
  • the detection unit 202 to the allocation unit 205 and the determination unit 207 to the suspension notification unit 209 are executed by the APL 103.
  • the pause unit 206 is executed by the PMU 102.
  • the codec process detection unit 210 and the codec process distribution unit 211 are executed by the BP 101.
  • the detecting unit 202 has a function of detecting that another software different from the specific software among the plurality of software is being executed in another core different from the specific core executing the specific process.
  • the specific software belongs to a plurality of software and has a function equivalent to a specific process.
  • the specific processing is, for example, audio codec processing, and the specific core is the DSP 104. Further, the specific processing may be digital image processing that the DSP 104 is generally good at.
  • the other software may be any software other than the specific software executed by the APL 103.
  • the other software may be a streaming video reproduction process that is a multimedia process other than the specific process.
  • sentence editing processing may be executed if the other software is word processor software that is business software.
  • the specific core and other cores may be CPUs having different performance.
  • the APL 103 shown in FIGS. 1 and 2 is one CPU, but the APL 103 that executes multimedia processing may include a plurality of CPUs.
  • the specific software having a function equivalent to the specific processing is, for example, codec processing software having a function equivalent to the codec processing handled by the DSP 104.
  • the detection unit 202 detects that the audio codec processing is being executed in the DSP 104 and that other software different from the codec processing software is being executed in the APL 103. Note that the information that it has been detected is stored in a storage area such as the RAM 108 or 110.
  • the extraction unit 203 obtains a calculation capability request value between the specific software and the other software from the software capability request table 201. Has a function to extract.
  • the required value of the calculation capability is the calculation capability for the software to operate normally.
  • the required value of computing power is measured in advance using a simulation before execution or a profiler.
  • the APL 103 may take a record at the time of software execution and update the software capability request table 201. Specifically, for example, when it is detected by the detection unit 202, the extraction unit 203 extracts a required value of the calculation capability of specific software.
  • the extracted value is indicated by, for example, MIPS (Million Instructions Per Second) indicating that millions of instructions can be executed per second.
  • MIPS Million Instructions Per Second
  • the extraction unit 203 extracts 60 [MIPS] as the required value of the calculation capability of the codec processing software that is specific software.
  • the extraction unit 203 extracts the required value of the calculation capability of the streaming playback software as 100 [MIPS] and the required value of the calculation capability of the audio playback software as 40 [MIPS].
  • the extracted required value of computing power is stored in a storage area such as the RAM 108 or 110.
  • the surplus determination unit 204 has a function of determining whether or not the sum of the calculation capability required values of the specific software and other software extracted by the extraction unit 203 is equal to or less than the calculation capability value of the other core. In addition, when the migration target software is migrated by the migration unit 208, the surplus determination unit 204 determines that the sum of the calculation value required for the remaining software other than the migration target software of the migration source core is the migration source core. It may be determined whether it is less than or equal to the computing ability value.
  • the surplus determination unit 204 is equal to or less than the computation capability value of the migration source core, and the total computation capability request value between the specific software and the software group being executed for each other core is the other core It may be determined whether or not it is less than or equal to the total of the computing ability values.
  • the required value of computing power of specific software is 60 [MIPS]
  • the required values of computing power of other software are 100 [MIPS] and 40 [MIPS]
  • the computing power value of the APL 103 is Assume a state of 200 [MIPS]. Since 60 + 100 + 40 ⁇ 200, the surplus determining unit 204 determines that the total required value of the calculation capability is equal to or less than the calculation capability value of the APL 103.
  • the determined information is stored in a storage area such as the RAM 108 and the RAM 110.
  • the allocating unit 205 has a function of allocating specific software to other cores when the surplus determining unit 204 determines that it is less than or equal to the computing capacity value of the other cores.
  • the assigning unit 205 may assign specific software to the core determined by the determining unit 207. Specifically, for example, when the surplus determining unit 204 determines that the calculation capability value is less than or equal to the APL 103, the allocating unit 205 allocates codec processing software to the APL 103.
  • the allocation result is stored in a storage area such as the RAM 108 and the RAM 110.
  • the suspension unit 206 has a function of receiving a notification from the suspension notification unit 209 and suspending the specific core when specific software is allocated to another core by the allocation unit 205. Further, when the assigning unit 205 assigns specific software to the core determined by the determining unit 207, the suspending unit 206 may suspend the specific core. Specifically, for example, when codec processing software is assigned to the APL 103, the PMU 102 pauses the DSP 104. Note that the information indicating the suspension is stored in a storage area such as the RAM 110.
  • the determination unit 207 determines that the surplus determination unit 204 is equal to or less than the calculation capability value of the other core, determines the calculation capability value, the specific software, and the required value of the calculation capability of the other software from the other cores. Has a function of determining a core having the maximum difference from the sum of
  • the APL 103 includes three CPUs APL # 1 to APL # 3. Also, if the computing capability value of APL # 1 is 100 [MIPS] and the total of the requested values is 70 [MIPS], the difference is 30 [MIPS]. Similarly, if the computing capability value of APL # 2 is 200 [MIPS] and the total of the requested values is 120 [MIPS], the difference is 80 [MIPS]. Similarly, if the computing capability value of APL # 3 is 600 [MIPS] and the total of the required values is 580 [MIPS], the difference is 20 [MIPS].
  • the determination unit 207 determines APL # 2 having the maximum difference from APL # 1 to APL # 3 as a CPU to which codec processing software is assigned.
  • the determined CPU information is stored in a storage area such as the RAM 108 or 110.
  • the migration unit 208 has a function of migrating the migration target software being executed on the migration source core among the other cores to the migration destination core among the other cores.
  • the transition unit 208 uses the surplus determination unit 204 to determine that the sum of the required calculation capability values of the specific software and the remaining software other than the migration target software of the migration source core is less than or equal to the computation capability value of the migration source core. If it is determined, the migration target software may be migrated.
  • the migration unit 208 migrates the migration target software to APL # 2.
  • the information on the migrated software to be migrated may be stored in a storage area such as the RAM 108 and the RAM 110.
  • the suspension notification unit 209 has a function of notifying a suspension request for a specific core when specific software is allocated to another core by the allocation unit 205. Specifically, for example, after codec processing software, which is specific software, is assigned to the APL 103, the suspension notification unit 209 notifies the PMU 102 of a suspension request from the DSP 104.
  • the suspension request information may be stored in a storage area such as the RAM 108 and the RAM 110.
  • the codec processing detection unit 210 has a function of detecting whether codec processing occurs based on data input / output by the RF circuit 106. Specifically, for example, when the input data format is PCM or ADPCM as a result of converting the input data according to the protocol applied by the multi-core processor system 100, the BP 101 generates codec processing. Is detected. The detected data is stored in a storage area such as the RAM 107 or the RAM 110.
  • the codec process distribution unit 211 has a function of distributing the codec process detected by the codec process detection unit 210 to the APL 103 or the DSP 104 based on the surplus of the calculation capability of the APL 103. Specifically, for example, if there is a surplus in the computing capability of the APL 103, the BP 101 distributes the codec processing to the APL 103. If there is no surplus in the computing capacity of the APL 103, the BP 101 distributes the codec processing to the DSP 104. Information about whether the codec processing is distributed to the APL 103 or the DSP 104 is stored in a storage area such as the RAM 107 or the RAM 110.
  • FIG. 3 is an explanatory diagram showing the transition of the execution state of each CPU of the multi-core processor system 100.
  • the state of the multi-core processor system 100 is any one of the following five states.
  • a state 302 is a call and the BP 101 and the DSP 104 are being executed.
  • state 303 a call is in progress and BP 101 and APL 103 are being executed.
  • the state 304 is a call and the BP 101, the APL 103, and the DSP 104 are being executed.
  • the state 305 the BP 101 and the APL 103 are being executed instead of a call.
  • the PMU 102 When the multi-core processor system 100 is in the state 301 and the BP 101 detects a call, the PMU 102 returns the DSP 104 that performs voice codec processing from the sleep state. As a result, the multi-core processor system 100 transitions from the state 301 to the state 302. When the multi-core processor system 100 is in the state 301 and the PMU 102 detects an external interrupt from the keyboard 113, the PMU 102 returns the APL 103 that performs multimedia processing from the sleep state. As a result, the multi-core processor system 100 transitions from the state 301 to the state 305.
  • the PMU 102 pauses the DSP 104 that performs voice codec processing. As a result, the multi-core processor system 100 transitions from the state 302 to the state 301.
  • the PMU 102 when the multi-core processor system 100 is in the state 302 and the PMU 102 detects an external interrupt from the keyboard 113, the PMU 102 returns the APL 103 that performs multimedia processing from the sleep state. Further, when there is a surplus in the computing capability of the APL 103, the PMU 102 shifts the codec processing from the DSP 104 to the APL 103. As a result, the multi-core processor system 100 transitions from the state 302 to the state 303. If there is no surplus in the computing capacity of the APL 103, the DSP 104 continues the codec processing. As a result, the multi-core processor system 100 transitions from the state 302 to the state 304.
  • the APL 103 ends the multimedia processing. Subsequently, the PMU 102 returns the DSP 104 from the hibernation state, shifts the codec processing from the APL 103 to the DSP 104, and then pauses the APL 103. As a result, the multi-core processor system 100 transitions from the state 303 to the state 302.
  • the PMU 102 first returns the DSP 104 from the sleep state. Subsequently, the PMU 102 shifts the codec processing from the APL 103 to the DSP 104. As a result, the multi-core processor system 100 transitions from the state 303 to the state 304.
  • the APL 103 ends the voice codec processing. As a result, the multi-core processor system 100 transitions from the state 303 to the state 305.
  • the PMU 102 shifts the codec processing from the DSP 104 to the APL 103. Subsequently, the PMU 102 pauses the DSP 104. As a result, the multi-core processor system 100 transitions from the state 304 to the state 303.
  • the PMU 102 pauses the DSP 104 that performs the voice codec processing. As a result, the multi-core processor system 100 transitions from the state 304 to the state 305.
  • the multi-core processor system 100 When the multi-core processor system 100 is in the state 305 and the BP 101 detects a call, if the APL 103 has a surplus in computing power, the APL 103 executes codec processing. As a result, the multi-core processor system 100 transitions from the state 305 to the state 303. If there is no surplus in the computing capability of the APL 103, the PMU 102 returns the DSP 104 from the hibernation state. As a result, the multi-core processor system 100 transitions from the state 305 to the state 304.
  • the APL 103 ends the multimedia processing.
  • the PMU 102 pauses the APL 103.
  • the multi-core processor system 100 transitions from the state 305 to the state 301.
  • FIG. 4 is an explanatory diagram of the execution status and power consumption of each CPU in the state 302 of FIG.
  • the state of the multi-core processor system 100 is the state 302
  • the BP 101 and the DSP 104 are executing a call process.
  • the power consumption of the DSP 104 is 50 [mW]
  • the power consumption of the APL 103 is 100 [mW], 200 [mW], and 600 [mW] in ascending order of the clock gear.
  • FIG. 5 is an explanatory diagram of the execution status and power consumption of each CPU in the state 304 of FIG.
  • the state of the multi-core processor system 100 is the state 304
  • the BP 101, the APL 103, and the DSP 104 are executing. It is assumed that the APL 103 operates with the second clock gear from the bottom.
  • FIG. 6 is an explanatory diagram of the execution status and power consumption of each CPU in the state 303 of FIG.
  • the state of the multi-core processor system 100 is the state 303
  • the BP 101 and the APL 103 are being executed.
  • the state 304 and the state 303 are compared, although the processing executed as the multi-core processor system 100 matches, the surplus of the computing power of the APL 103 is used for the codec processing. Will save power.
  • FIG. 7 is an explanatory diagram showing an example of the contents stored in the software capability request table 201.
  • the table has two fields: a software name and a calculation value.
  • the software name field stores the name of the software.
  • the required value of computing capacity field stores the requested value of computing capacity of software.
  • the computing capacity is 100 [MIPS].
  • the computing capability is 40 [MIPS]
  • the computing capability is, for example, 110 [MIPS].
  • PCM codec software having a function equivalent to the codec processing performed by the DSP 104 to operate normally
  • the computing capacity is, for example, 60 [MIPS].
  • FIG. 7 shows an example of performing multimedia processing in the APL 103 when the multi-core processor system 100 changes from the state 304 to the state 303.
  • the power consumption of the APL 103 is 200 [mW]
  • the corresponding computing capacity is 200 [MIPS].
  • the software executed by the APL 103 is “streaming reproduction” software and “sound reproduction” software
  • the total of the required values of the computing capabilities of both softwares is 140 [MIPS].
  • the APL 103 can secure 60 [MIPS] for the normal operation of the “PCM codec” software.
  • the state of the multi-core processor system 100 changes from the state 304 to the state 303 because there is a surplus.
  • the software running on the APL 103 is “map display” software and “audio playback” software.
  • FIG. 8A and 8B are flowcharts showing the scheduling process of the multi-core processor system 100.
  • FIG. 8A shows the scheduling process of the PMU 102 and the APL 103
  • FIG. 8B shows the scheduling process of the BP 101.
  • Step S801 PMU event acquisition processing
  • step S802 the PMU 102 branches the process depending on the event output in the PMU event acquisition process (step S802). If the output event is an “external interrupt event” (step S802: external interrupt event), the PMU 102 executes an external interrupt detection process (step S803). Details of the external interrupt detection process will be described later with reference to FIG. In the process of step S803, the PMU 102 transmits an external interrupt notification to the APL 103 according to the state of the APL 103. After executing the external interrupt detection process, the PMU 102 proceeds to the process of step S801.
  • step S802 codec result event
  • step S804 codec result processing
  • step S805 DSP activation request process
  • step S805 the PMU 102 transmits a DSP activation completion notification to the APL 103 or BP 101 in accordance with the request source that issued the DSP activation request. After executing the DSP activation request process, the PMU 102 proceeds to the process of step S801.
  • step S802 event with surplus
  • step S806 the PMU 102 executes a process with surplus (step S806). Details of the surplus processing will be described later with reference to FIG. Further, within the process of step S806, the PMU 102 transmits a surplus notification to the BP 101. After executing the surplus process, the PMU 102 proceeds to the process of step S801. If the output event is an “APL sleep request event” (step S802: APL sleep request event), the PMU 102 pauses the APL 103 (step S807). After execution, the PMU 102 proceeds to the process of step S801.
  • the APL 103 pauses until a notification is received (step S821).
  • a notification is received (step S821).
  • the PMU 102 stops the supply of power to the APL 103, thereby causing the APL 103 to enter a sleep state.
  • step S823 the APL 103 executes streaming playback software, audio playback software, and the like as multimedia processing corresponding to external interrupt processing.
  • the APL 103 executes a surplus determination process (step S824). Details of the surplus determination process will be described later with reference to FIGS. 14, 15A, and 15B. Based on the determination result, the APL 103 determines whether or not there is a surplus (step S825). When it is determined that there is a surplus (step S825: Yes), the APL 103 transmits a surplus notification to the PMU 102 (step S826). After the transmission, the APL 103 determines whether a codec processing request notification has been received in the process of step S822 (step S827).
  • step S827 If the codec processing request notification has been received (step S827: Yes), the APL 103 executes codec start processing (step S828). Details of the codec start processing will be described later with reference to FIG. If the DSP 104 is in a dormant state within the processing of step S828, the APL 103 transmits a DSP activation request notification to the PMU 102. In addition, when the codec processing is completed, the APL 103 notifies the BP 101 of the result of the codec processing.
  • the APL 103 determines whether the external interrupt process has been completed (step S831). When the external interrupt process is finished (step S831: Yes), the APL 103 executes the external interrupt end process (step S832). Details of the external interrupt termination process will be described later with reference to FIG. If a surplus notification is transmitted to the PMU 102 within the process of step S832, the APL 103 transmits a surplus cancel notification to the PMU 102.
  • step S821 the APL 103 determines whether a task dispatch has occurred (step S833). When task dispatch occurs (step S833: Yes), external interrupt processing has occurred again, so the APL 103 shifts to step S823. If no task dispatch has occurred (step S833: No), the APL 103 proceeds to the process of step S831.
  • step S825 When it is determined that there is no surplus (step S825: No), the APL 103 determines whether a codec processing request notification has been received (step S829). When the codec processing request notification has been received (step S829: Yes), the APL 103 executes DSP codec processing (step S830). Details of the DSP codec processing will be described later with reference to FIG. In the process of step S830, if the DSP 104 is in a dormant state, the APL 103 transmits a DSP activation request notification to the PMU 102. After the DSP codec process, the APL 103 proceeds to the process of step S831. Even when the codec processing request notification has not been received (step S827: No, step S829: No), the APL 103 proceeds to the process of step S831.
  • the BP 101 determines whether codec processing has occurred (step S841). If no codec processing has occurred (step S841: No), the BP 101 executes the processing of step S841 again after a predetermined time. If codec processing has occurred (step S841: Yes), the BP 101 is transmitted from step S805, step S806, and step S828, and acquires the notification received by the BP 101 (step S842). After obtaining the notification, the BP 101 determines whether the DSP 104 or the APL 103 is currently executing codec processing (step S843).
  • step S843 When the codec processing is being executed (step S843: Yes), the BP 101 determines whether or not the APL 103 surplus notification has been received from the PMU 102 (step S844). When the surplus notification is not received (step S844: No), the BP 101 determines whether the codec processing result is received from the DSP 104 or the APL 103 (step S847). When the codec processing result is received (step S847: Yes), the BP 101 transmits a codec processing result reception notification to the PMU 102 (step S851). After the transmission, the BP 101 proceeds to the process of step S841.
  • step S842 If the result of the codec process has not been received (step S847: No), the BP 101 proceeds to the process of step S842.
  • step S844: Yes the BP 101 transmits a codec processing request notification to the APL 103 (step S845). After the transmission, the BP 101 transmits a distribution completion notification to the APL 103 to the PMU 102 (step S846), and proceeds to the process of step S842.
  • step S843: No the BP 101 determines whether or not the APL 103 surplus notification has been received from the PMU 102 (step S848). If the surplus notification is received (step S848: Yes), the BP 101 transmits a codec processing request notification to the APL 103 (step S849), and proceeds to the processing of step S842. If no surplus notification has been received (step S848: No), the BP 101 executes DSP codec processing (step S850), and proceeds to the processing of step S842. If the DSP 104 is in the dormant state in the process of step S850, the BP 101 transmits a DSP activation request notification to the PMU 102.
  • FIG. 9 is a flowchart showing the PMU event acquisition process.
  • the PMU 102 waits until an interrupt or notification is received (step S901).
  • the PMU 102 acquires an interrupt or notification (step S902), and determines whether a cancellation notification with surplus has been acquired (step S903).
  • the PMU 102 deletes the surplus notification from the queue storing the notification (step S904), and proceeds to the process of step S901 again.
  • step S905 determines whether an external interrupt has been acquired (step S905). When an external interrupt is acquired (step S905: Yes), the PMU 102 outputs an external interrupt event (step S906) and ends the PMU event process. If an external interrupt has not been acquired (step S905: No), the PMU 102 determines whether a codec processing result receipt notification from the BP 101 has been acquired (step S907). When the codec processing result reception notification is acquired (step S907: Yes), the PMU 102 outputs a codec result event (step S908), and ends the PMU event processing.
  • step S909 determines whether a DSP activation request notification has been acquired (step S909).
  • step S909: Yes the PMU 102 outputs a DSP activation request event (step S910) and ends the PMU event processing.
  • step S910 the DSP activation request notification has not been acquired (step S909: No)
  • step S911 the PMU 102 determines whether a surplus notification has been acquired (step S911).
  • the surplus notification is acquired (step S911: Yes)
  • the PMU 102 outputs a surplus event (step S912) and ends the PMU event process.
  • step S911 determines whether the surplus notification has not been acquired (step S911: No). If the surplus notification has not been acquired (step S911: No), the PMU 102 determines whether the sleep request notification from the APL 103 has been acquired (step S913). When the sleep request notification is acquired (step S913: Yes), the PMU 102 outputs an APL sleep request event (step S914) and ends the PMU event process. When the APL sleep request notification has not been acquired (step S913: No), the notification acquired in step S902 is discarded, and the process proceeds to step S901.
  • FIG. 10 is a flowchart showing the external interrupt detection process.
  • the PMU 102 determines whether the APL 103 is being activated (step S1001). When the APL 103 is not activated (step S1001: No), the PMU 102 activates the APL 103 (step S1002). When the APL is activated (step S1001: Yes) or after the process of step S1002, the PMU 102 transmits an external interrupt notification to the APL 103 (step S1003), and ends the external interrupt detection process.
  • FIG. 11 is a flowchart showing codec result processing.
  • the PMU 102 determines whether the DSP 104 is being activated (step S1101). If it is activated (step S1101: Yes), the PMU 102 pauses the DSP 104 (step S1102), and ends the codec result processing. Even when the DSP 104 is not activated (step S1101: No), the PMU 102 ends the codec result processing.
  • FIG. 12 is a flowchart showing the DSP activation request process.
  • the PMU 102 activates the DSP 104 (step S1201). After the DSP 104 is activated, the PMU 102 determines whether a DSP activation request notification has been received from the APL 103 (step S1202). When the DSP activation request notification is received from the APL 103 (step S1202: Yes), the PMU 102 transmits a DSP activation completion notification to the APL 103 (step S1203).
  • step S1203 when the DSP activation request notification is not received from the BP 101 (step S1202: No), the PMU 102 transmits a DSP activation completion notification to the BP 101 (step S1204), and ends the DSP activation request processing. .
  • FIG. 13 is a flowchart showing the surplus processing.
  • the PMU 102 transmits a surplus notification to the BP 101 (step S1301). After the transmission, the PMU 102 determines whether a distribution completion notification from the BP 101 to the APL 103 has been received (step S1302). When the distribution completion notification has not been received (step S1302: No), the PMU 102 proceeds to the process of step S1302 again after a predetermined time.
  • step S1302 When the distribution completion notification is received (step S1302: Yes), the PMU 102 determines whether the DSP 104 is activated (step S1303). When the DSP 104 is being activated (step S1303: Yes), the PMU 102 pauses the DSP 104 (step S1304) and ends the surplus processing. When the DSP 104 is not activated (step S1303: No), the PMU 102 ends the surplus process.
  • FIG. 14, FIG. 15A, and FIG. 15B are flowcharts showing surplus determination processing.
  • FIG. 14 shows a flowchart when the number of APLs 103 in the multi-core processor system 100 is single, and FIGS. 15A and 15B show flowcharts when the number of APLs 103 in the multi-core processor system 100 is plural.
  • FIG. 14 is a flowchart showing a surplus determination process when the APL 103 is singular.
  • the APL 103 acquires the required value C of the calculation capability of the codec processing software from the software capability request table 201 (step S1401). Subsequently, the APL 103 sets the variable k to 1 (step S1402).
  • the APL 103 acquires the requested value A (k) of the computing capacity of the k-th software executed by the APL 103 from the software capacity request table 201 (step S1403). After acquisition, the APL 103 increments the variable k (step S1404), and determines whether the variable k is equal to or less than the number of software being executed by the APL 103 (step S1405). When the variable k is equal to or less than the number of software being executed (step S1405: Yes), the APL 103 proceeds to the process of step S1403.
  • step S1405 When the variable k exceeds the number of software being executed (step S1405: No), the APL 103 acquires the computing capability P (n) for the current clock gear n of the APL 103 (step S1406). Using the values acquired in steps S1403 and S1406, the APL 103 determines whether the inequality ⁇ k A (k) + C ⁇ P (n) is satisfied (step S1407). If the inequality holds (step S1407: Yes), the APL 103 determines that there is a surplus (step S1408), and ends the surplus determination process. When the inequality does not hold (step S1407: No), the APL 103 determines that there is no surplus (step S1409), and ends the surplus determination process.
  • FIG. 15A and FIG. 15B are flowcharts showing surplus determination processing when there are a plurality of APLs 103.
  • the APL 103 includes M CPUs, APL # 1, APL # 2,..., APL # M.
  • the scheduling process executed by the APL 103 is performed by any one of the CPUs APL # 1 to APL # M.
  • the flowcharts of FIGS. 15A and 15B describe the state in which APL # 1 is executed.
  • APL # 1 obtains the required value C of the calculation capability of the codec processing software from the software capability request table 201 (step S1501). After acquisition, APL # 1 sets 1 to the variable x (step S1502). After setting, APL # 1 selects the xth APL (step S1503). After selection, APL # 1 sets 1 to the variable k (step S1504). After the setting, APL # 1 obtains the required value Ax (k) of the computing capacity of the k-th software executed by APL # x from the software capacity request table 201 (step S1505).
  • APL # 1 increments the variable k (step S1506), and determines whether the variable k is equal to or less than the number of software being executed in APL # x (step S1507). If the variable k is equal to or less than the number of software being executed (step S1507: Yes), APL # 1 proceeds to the process of step S1505. When the variable k exceeds the number of software being executed (step S1507: No), APL # 1 acquires the computing capability Px (nx) of APL # x for the current clock gear nx (step S1508).
  • APL # 1 increments variable x by APL # 1 (step S1509), and determines whether variable x is equal to or less than the number of APLs (step S1510). When the variable x is equal to or less than the number of APLs (step S1510: Yes), the process proceeds to step S1503.
  • Step S1510: No APL # 1 determines whether inequalities ⁇ x ⁇ k Ax (k) + C ⁇ ⁇ x Px (nx) is satisfied (step S1511). If the inequality does not hold (step S1511: NO), APL # 1 determines that there is no surplus (step S1520), and ends the surplus determination process. If the inequality holds (step S1511: Yes), APL # 1 sets the variable x to 1 (step S1512).
  • APL # 1 increments the variable x (step S1514), and determines whether the variable x is equal to or less than the number of APLs (step S1515). When the variable x is equal to or less than the number of APLs (step S1515: Yes), APL # 1 proceeds to the process of step S1513.
  • APL # 1 determines whether Max (S (x)) is 0 or more (step S1516). When Max (S (x)) is 0 or more (step S1516: Yes), APL # 1 determines APL # x that is Max (S (x)) as a CPU with surplus (step S1519). The surplus determination process is terminated. When Max (S (x)) is less than 0 (step S1516: No), APL # 1 to APL # M perform software rescheduling or migration with APL # 1 to APL # M (step S1517). .
  • APL # 1 determines whether APL # x satisfying Max (S (x)) ⁇ 0 exists in APL # 1 to APL # M (step S1518). If APL # x exists (step S1518: YES), APL # 1 proceeds to the process of step S1519. If APL # x does not exist (step S1518: NO), APL # 1 proceeds to the process of step S1520.
  • Rescheduling or migration which is the processing of step S1517, is executed such that the surplus computing capability S (x) of APL # 1 to APL # M exceeds the required value C of the computing capability of the codec processing software.
  • a specific example of migration is shown below. Specifically, for example, there are two APLs, APL # 1 and APL # 2, from which APL # 1 has an arithmetic capacity of 100 [MIPS] and APL # 2 has an arithmetic capacity of 200 [MIPS]. Assuming that
  • APL # 1 and APL # 2 perform rescheduling or migration so that the required value C of the computing power of the codec processing software is exceeded in APL # 1 and APL # 2.
  • FIG. 16 is a flowchart showing the codec start process.
  • the APL 103 starts codec processing (step S1601). During the codec process, the APL 103 determines whether the external interrupt process has been completed or whether there is no surplus in the computing capability of the APL 103 (step S1602). If the external interrupt process has not been completed and the APL 103 has a surplus in computing capacity (step S1602: No), the APL 103 determines whether the codec process has been completed (step S1603). If the codec process has not ended, the APL 103 proceeds to the process of step S1602.
  • step S1603 Yes
  • the APL 103 returns the result of the codec processing to the BP 101 (step S1604). After returning the result, the APL 103 determines whether or not the codec processing request notification has been received (step S1606). If not received (step S1606: No), the APL 103 ends the codec start process.
  • step S1606 YES
  • the APL 103 proceeds to the processing of step S1601.
  • step S1602 Yes
  • the APL 103 executes DSP codec processing (step S1605) and ends the codec start processing.
  • FIG. 17 is a flowchart showing DSP codec processing.
  • the DSP codec process is executed by the BP 101 or the APL 103. In the example of FIG. 17, it is assumed that the DSP codec process is executed by the BP 101.
  • the BP 101 transmits a DSP activation request notification to the PMU 102 (step S1701). After transmitting the DSP activation request notification, the BP 101 determines whether a DSP activation completion notification has been received from the PMU 102 (step S1702). If the DSP activation completion notification has not been received (step S1702: No), the BP 101 proceeds to the process of step S1702 again after a predetermined time.
  • the BP 101 determines whether the APL 103 is executing codec processing (step S1703). If the APL 103 is executing codec processing (step S1703: YES), the BP 101 shifts the codec processing from the APL 103 to the DSP 104 (step S1704), and ends the DSP codec processing. If the APL 103 has not executed the codec processing (step S1703: No), the BP 101 distributes the codec processing to the DSP 104 (step S1705), and ends the DSP codec processing.
  • FIG. 18 is a flowchart showing an external interrupt end process.
  • the APL 103 determines whether a surplus notification has been transmitted to the PMU 102 (step S1801). When a surplus notification is transmitted (step S1801: Yes), the APL 103 transmits a surplus cancel notification to the PMU 102 (step S1802). When the surplus notification is not transmitted (step S1801: No), or after the end of step S1802, the APL 103 transmits an APL sleep request to the PMU 102 (step S1803), and ends the external interrupt termination process.
  • the APL 103 may store a cancellation notice with surplus at the top of the queue storing the notification of the PMU 102. Thereby, when the PMU 102 acquires the notification in step S902, the cancellation notification with surplus can be acquired before the notification with surplus, and the PMU 102 can delete the notification with surplus.
  • FIG. 19 is a flowchart showing an example of a process for searching for migration target software to be migrated in step S1517.
  • APL # 1 sets 1 to the variable x (step S1901), and also sets 1 to the variable k (step S1902). After setting, APL # 1 calculates S (x) + A (k) in the k-th software of APL # x (step S1903).
  • APL # 1 increments the variable k (step S1904), and determines whether the variable k is equal to or lower than the running software (step S1905). When the variable k is equal to or less than the number of software being executed (step S1905: Yes), APL # 1 proceeds to the process of step S1903. If the variable k exceeds the number of software being executed (step S1905: No), APL # 1 increments the variable x (step S1906), and determines whether the variable x is equal to or less than the number of APLs (step S1907). If the variable x is equal to or less than the number of APLs (step S1907: YES), APL # 1 proceeds to the process of step S1902.
  • APL # 1 is S (x) + A (k) ⁇ 0 among the calculated S (x) + A (k), and is the smallest X and k that satisfy S (x) + A (k) are set to x1 and k1 (step S1908).
  • APL # x1 becomes the migration source CPU, and the k1th software of APL # x1 becomes the migration target software.
  • S (x1) + A (k1) ⁇ 0 do not exist, APL # 1 sets no value. Note that S (x1) + A (k1) ⁇ 0 can be modified as follows.
  • APL # 1 determines whether values are set in x1 and k1 (step S1909). When the value is not set (step S1909: No), APL # 1 outputs that the migration target software is not found (step S1916), and ends the migration target software search process. When the value is set (step S1909: Yes), APL # 1 sets 1 to the variable x (step S1910).
  • APL # 1 determines whether the variable x is equal to or less than the number of APLs (step S1911). When the variable x is larger than the number of APLs (step S1911: No), APL # 1 proceeds to the process of step S1916. When the variable x is equal to or less than the number of APLs (step S1911: Yes), APL # 1 determines whether the variable x and x1 are equal (step S1912). If the variables x and x1 are equal (step S1912: YES), APL # 1 increments the variable x (step S1914), and the process proceeds to step S1911.
  • Step S1912 determines whether inequalities Px (nx) - ⁇ k A ( k) -A (k1) ⁇ 0 is satisfied (step S1913). When the inequality does not hold (step S1913: No), APL # 1 proceeds to the process of step S1914. If the inequality holds (step S1913: Yes), APL # 1 outputs that APL # x1 is the migration source CPU, the k1th software of APL # x1 is the migration target software, and APL # x is the migration destination CPU (Step S1915). After the output, APL # 1 ends the search process for the migration target software.
  • the computing power of the specific software having the function executed in the specific core and the other software being executed in the other core Determine whether the total is within the computing power of other cores. If it is within the computing power, the multi-core processor system allocates specific software to other cores and puts the specific cores in a sleep state. As a result, the multi-core processor system can effectively utilize the surplus of computing power generated in the other cores, and can save power for the power used by the specific core.
  • specific software may be assigned to the core having the largest surplus of computing power among other cores.
  • the multi-core processor system can achieve power saving for a specific core.
  • the multi-core processor system can assign specific software so that the load of other cores approaches equally.
  • the multi-core processor system may migrate the migration target software running on the migration source core to the migration destination core and assign specific software to the migration source core.
  • the multi-core processor system collects the surplus of computing power in one core even if the surplus of computing capacity of each of the other cores does not reach the required value of the computing capacity of the specific software. Can be executed by the above-mentioned one core, and power saving can be achieved.
  • the multi-core processor system sets the software to be migrated when the total required computing power of specific software and software running for each other core is less than or equal to the total computing capacity of other cores. You may migrate. As a result, the multi-core processor system can determine whether or not specific software can be executed by one core of other cores before collecting the surplus of computing power, thereby eliminating unnecessary transition processing.
  • the power control method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the power control program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the power control program may be distributed through a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

 APL(103)は、検出部(202)によって特定の処理を実行する特定のコアとは異なる他のコアで、複数のソフトウェアのうち、特定のソフトウェアは特定の処理と同等の機能を有し、特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出する。検出後、APL(103)は、抽出部(203)によって、ソフトウェア能力要求テーブル(201)から、特定のソフトウェアと他のソフトウェアとの演算能力の要求値を抽出する。抽出された要求値を用いて、APL(103)は、余剰判断部(204)によって特定のソフトウェアと他のソフトウェアとの演算能力の要求値の合計が、他のコアの演算能力値以下と判断した場合、割当部(205)によって特定のソフトウェアを割り当てる。割り当て後、PMU(102)は、休止部(206)によってDSP(104)を休止させる。

Description

マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
 本発明は、電力を制御するマルチコアプロセッサシステム、電力制御方法、および電力制御プログラムに関する。
 従来の携帯電話は、通信、通話機能をベースバンドプロセッサ(以下、「BP」と称する。)が担当しており、その他のマルチメディア処理をアプリケーションプロセッサ(以下、「APL」と称する。)が担当している。さらに、BPは、通話機能で使用する音声の符号化と復号を行う音声コーデック処理をDSP(Digital Signal Processor)に処理させている(たとえば非特許文献1~3を参照。)。DSPは、特定の演算処理を高速に行うことを目的に作られ、主に音声処理・画像処理などに使われるプロセッサである。このように、携帯電話を制御するプロセッサは、BP、APL、DSPという処理の異なるプロセッサを有するヘテロジニアス・マルチコアプロセッサシステムである。
 ヘテロジニアス・マルチコアプロセッサシステムの省電力の技術として、専用のCPU(Central Processing Unit)と汎用のCPUのうち、外部電源かバッテリー駆動かに応じて、プログラムを割り当てるCPUを選択することで省電力化を図るという技術が開示されている(たとえば、下記特許文献1を参照。)。
 また、APLは負荷の高いマルチメディア処理を担当するため、実行しているマルチメディア処理によって演算能力が大きく変化する。したがって、APLは、演算能力を変化させる機能として、クロックギア機能を有する場合もある。クロックギア機能は、周波数を段階的に変更させることができる機能である。APLが有するクロックギア機能は、3~5段階に周波数を変更できる場合が多い。このように、APLは、実行しているマルチメディア処理に応じてクロックギアを変更することで、省電力化を図ることができる。
特開2008-276395号公報
頭脳放談 : 第20回 日立がS-MAPでケータイを変える?、[online]、[平成22年03月18日検索]、インターネット<http://www.atmarkit.co.jp/fpc/rensai/zunouhoudan020/smap.html> @IT:頭脳放談:第44回 ニッポン半導体、復活のカギは携帯電話?、[online]、[平成22年03月18日検索]、インターネット<http://www.atmarkit.co.jp/fsys/zunouhoudan/044zunou/app_processor.html> Mobile:TIの「OMAP」,NEC,松下,富士通が3G携帯に採用、[online]、[平成22年03月18日検索]、インターネット<http://plusd.itmedia.co.jp/mobile/0203/18/n_omap.html>
 しかしながら、上述した従来技術において、特許文献1にかかる技術では、電源の利用形態が外部電源かバッテリー駆動かによってプログラムを割り当てるCPUを選択している。バッテリー駆動の際に、省電力状態となる低性能のCPUを選択することになり、バッテリーに余裕があったとしても常にプログラムの実行速度が低速となる問題点があった。また、クロックギア機能を使って省電力化を行っていても、クロックギアで設定できる階数は少ないため、実行中のマルチメディア処理が適切な演算能力とAPLの演算能力とで差分が発生し、演算能力の余剰が発生するという問題点があった。
 本発明は、上述した従来技術による問題点を解消するため、演算能力の余剰を減らし、省電力化するマルチコアプロセッサシステム、電力制御方法、および電力制御プログラムを提供することを目的とする。
 上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、特定の処理を実行する特定のコアとは異なる他のコアにおいて、複数のソフトウェアのうち特定のソフトウェアは特定の処理と同等の機能を有し、複数のソフトウェアのうち特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出し、他のソフトウェアが他のコアに実行中である状態が検出された場合、複数のソフトウェアのうち、当該ソフトウェアごとに演算能力の要求値を記憶したデータベースから、特定のソフトウェアと他のソフトウェアとの演算能力の要求値を抽出し、抽出された特定のソフトウェアと他のソフトウェアとの演算能力の要求値の合計が、他のコアの演算能力値以下か否かを判断し、演算能力の要求値の合計が他のコアの演算能力値以下であると判断された場合、他のコアに特定のソフトウェアを割り当て、特定のソフトウェアが他のコアに割り当てられた場合、特定のコアを休止させることを要件とする。
 本マルチコアプロセッサシステム、電力制御方法、および電力制御プログラムによれば、演算能力の余剰を減らし、省電力化できるという効果を奏する。
本実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。 マルチコアプロセッサシステム100を示すブロック図である。 マルチコアプロセッサシステム100の各CPUの実行状態の遷移を示す説明図である。 図3の状態302における各CPUの実行状況と消費電力の説明図である。 図3の状態304における各CPUの実行状況と消費電力の説明図である。 図3の状態303における各CPUの実行状況と消費電力の説明図である。 ソフトウェア能力要求テーブル201の記憶内容の一例を示す説明図である。 マルチコアプロセッサシステム100のスケジューリング処理を示すフローチャート(その1)である。 マルチコアプロセッサシステム100のスケジューリング処理を示すフローチャート(その2)である。 PMUイベント取得処理を示すフローチャートである。 外部割り込み検出処理を示すフローチャートである。 コーデック結果処理を示すフローチャートである。 DSP起動要求処理を示すフローチャートである。 余剰あり処理を示すフローチャートである。 APL103が単数の場合における余剰判断処理を示すフローチャートである。 APL103が複数の場合における余剰判断処理を示すフローチャート(その1)である。 APL103が複数の場合における余剰判断処理を示すフローチャート(その2)である。 コーデック開始処理を示すフローチャートである。 DSPコーデック処理を示すフローチャートである。 外部割り込み終了処理を示すフローチャートである。 ステップS1517におけるマイグレーションの対象となる移行対象ソフトウェアの検索処理の一例を示すフローチャートである。
 以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、電力制御方法、および電力制御プログラムの好適な実施の形態を詳細に説明する。
(マルチコアプロセッサシステムのハードウェア)
 図1は、本実施の形態にかかるマルチコアプロセッサシステムのハードウェアを示すブロック図である。図1において、マルチコアプロセッサシステム100は、ベースバンドプロセッサ(BP)101と、PMU(Power Management Unit)102と、アプリケーションプロセッサ(APL)103と、DSP104と、を備えている。
 マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。好ましくは、マルチコアプロセッサシステム100は、性能が異なるコアを複数備える、ヘテロジニアス・マルチコアプロセッサシステムであってもよい。
 また、専用の記憶領域として、マルチコアプロセッサシステム100は、BP101がアクセス可能なRAM(Random Access Memory)107と、APL103がアクセス可能なRAM108とを備えている。共用の記憶領域として、マルチコアプロセッサシステム100は、ROM(Read Only Memory)109と、RAM110と、フラッシュROM111と、を備えている。また、ユーザやその他の機器との入出力装置として、マルチコアプロセッサシステム100は、アンテナ105と、RF回路106と、ディスプレイ112と、キーボード113と、を備えている。また、各部はバス114によってそれぞれ接続されている。
 ここで、BP101は、RF回路106の制御によって通話の検出を行い、通信、通話機能を担当するプロセッサコアである。また、本実施の形態にかかるBP101は、APL103の演算能力に余剰があるか否かで、通話に伴う音声コーデック処理をAPL103かDSP104に配布する。PMU102は、消費電力を装置ごとに管理する装置であり、本実施の形態では、APL103とDSP104をスリープさせる。
 APL103は、マルチメディア処理を担当するプロセッサコアである。また、APL103は、演算能力に余剰がある場合に、音声コーデックも担当する。APL103は、APL103とRAM108などの動作周波数を変更できる機能として、クロックギア機能を有してもよい。APL103は、実行しているソフトウェアの負荷に応じてクロックギアを切り替えることにより、省電力効果を得ることができる。たとえば、APL103は、クロックギアを3~5段階に変更できる。具体的な動作周波数の例としては、100[MHz]、200[MHz]、600[MHz]であり、それぞれの動作周波数に対応する消費電力の例としては、100[mW]、200[mW]、600[mW]である。
 DSP104は、音声コーデックを担当するプロセッサコアである。音声コーデックのフォーマットとしては、PCM(Pulse Code Modulation)、ADPCM(Adaptive Differential Pulse Code Modulation)が存在する。DSP104の専用のRAMを図示していないが、DSP104専用のRAMが存在してもよい。また、マルチコアプロセッサシステム100は、APL103がRAM108にアクセスして音声コーデック処理を実行している途中に、DSP104に音声コーデック処理を移行することもある。そのときには、RAM108に格納されている音声コーデックの途中結果にアクセスするため、DSP104はRAM108にアクセスできるように結線してもよい。
 アンテナ105は、無線信号を送受信する。RF回路106は、高周波処理部であり、アンテナ105を介してインターネットなどのネットワークからデータを受信したり、ネットワークへデータを送信したりする。ここでは、RF回路106は、A(Analog)/D(Digital)コンバータやD/Aコンバータなどを備えていることとし、ネットワークからのデータをディジタル信号に変換したり、BP101からのデータをアナログ信号に変換したりする。
 ROM109は、ブートプログラムなどのプログラムを記憶している。RAM110は、BP101、PMU102、APL103、DSP104のワークエリアとして使用される。フラッシュROM111は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。
 ディスプレイ112は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ112は、たとえば、TFT液晶ディスプレイなどを採用することができる。キーボード113は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。図1にて図示した例では、テンキーであり、ユーザからの入力を外部割り込みとしてPMU102に送信する。
(マルチコアプロセッサシステム100)
 次に、マルチコアプロセッサシステム100について説明する。図2は、マルチコアプロセッサシステム100を示すブロック図である。マルチコアプロセッサシステム100は、検出部202と、抽出部203と、余剰判断部204と、割当部205と、休止部206と、決定部207と、移行部208と、休止通知部209と、コーデック処理検出部210と、コーデック処理配布部211と、を含む。この制御部となる機能(検出部202~コーデック処理配布部211)は、記憶装置に記憶されたプログラムをBP101、PMU102、APL103のいずれかが実行することにより、その機能を実現する。記憶装置とは、たとえば、図1に示したRAM107、RAM108、ROM109、RAM110、フラッシュROM111などである。
 また、マルチコアプロセッサシステム100は、ソフトウェア能力要求テーブル201にアクセス可能である。ソフトウェア能力要求テーブル201は、複数のソフトウェアのうち、ソフトウェアごとに演算能力の要求値を記憶する。ソフトウェア能力要求テーブル201にアクセスするのは、APL103であるため、図2ではソフトウェア能力要求テーブル201がRAM108に格納されているが、RAM110などに格納されていてもよい。
 また、各制御部のうち、検出部202~割当部205、決定部207~休止通知部209はAPL103によって実行される。休止部206は、PMU102によって実行される。コーデック処理検出部210、コーデック処理配布部211は、BP101によって実行される。
 検出部202は、特定の処理を実行する特定のコアとは異なる他のコアにおいて、複数のソフトウェアのうち、特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出する機能を有する。特定のソフトウェアは、複数のソフトウェアに属し、特定の処理と同等の機能を有する。また、特定の処理とは、たとえば音声のコーデック処理であり、特定のコアとはDSP104である。また、特定の処理としては、DSP104が一般的に得意とするディジタル画像処理であってもよい。
 特定のコアとは異なる他のコアは、APL103である。また、他のソフトウェアは、APL103にて実行される特定のソフトウェア以外であればどのソフトウェアであってもよい。たとえば、他のソフトウェアは、特定の処理以外のマルチメディア処理である、ストリーミング映像再生処理であってもよい。たとえば、マルチメディア処理を実行する以外にも、他のソフトウェアがビジネスソフトウェアであるワードプロセッサソフトウェアであれば文章編集処理を実行してもよい。
 また、特定のコアと他のコアは、性能の異なるCPUであってもよい。図1、図2で示したAPL103は1つのCPUであるが、マルチメディア処理を実行するAPL103は複数のCPUを含んでいてもよい。特定の処理と同等の機能を有する特定のソフトウェアとは、たとえば、DSP104が担当するコーデック処理と同等の機能を有するコーデック処理ソフトウェアである。
 具体的には、たとえば、検出部202は、DSP104にて音声のコーデック処理が実行中で、APL103ではコーデック処理ソフトウェアとは異なる他のソフトウェアが実行中であることを検出する。なお、検出されたという情報は、RAM108、RAM110などの記憶領域に記憶される。
 抽出部203は、検出部202によって他のソフトウェアが他のコアに実行中である状態が検出された場合、ソフトウェア能力要求テーブル201から、特定のソフトウェアと他のソフトウェアとの演算能力の要求値を抽出する機能を有する。演算能力の要求値とは、ソフトウェアが正常動作するための演算能力である。演算能力の要求値は、実行前のシミュレーションや、プロファイラを用いて事前に測定される。また、APL103は、ソフトウェア実行時に記録を取り、ソフトウェア能力要求テーブル201を更新してもよい。具体的には、たとえば、検出部202によって検出された場合、抽出部203は、特定のソフトウェアの演算能力の要求値を抽出する。
 抽出された値は、たとえば、1秒間に何百万個の命令が実行できるかを示すMIPS(Million Instructions Per Second)で示される。たとえば、抽出部203によって特定のソフトウェアであるコーデック処理ソフトウェアの演算能力の要求値は60[MIPS]と抽出される。同様に、抽出部203によって他のソフトウェアとして、ストリーミング再生ソフトウェアの演算能力の要求値は100[MIPS]、音声再生ソフトウェアの演算能力の要求値は40[MIPS]と抽出される。なお、抽出された演算能力の要求値は、RAM108、RAM110などの記憶領域に記憶される。
 余剰判断部204は、抽出部203によって抽出された特定のソフトウェアと他のソフトウェアとの演算能力の要求値の合計が、他のコアの演算能力値以下か否かを判断する機能を有する。また、余剰判断部204は、移行部208によって移行対象ソフトウェアが移行させられる場合に、移行元のコアの移行対象ソフトウェア以外の残余のソフトウェアとの演算能力の要求値の合計が、移行元のコアの演算能力値以下か否かを判断してもよい。また、余剰判断部204は、移行元のコアの演算能力値以下であり、かつ、特定のソフトウェアと他のコアごとに実行中のソフトウェア群との演算能力の要求値の合計が、他のコアの演算能力値の合計以下であるか否かを判断してもよい。
 具体的には、たとえば、特定のソフトウェアの演算能力の要求値が60[MIPS]、他のソフトウェアの演算能力の要求値が100[MIPS]、40[MIPS]であり、APL103の演算能力値が200[MIPS]である状態を想定する。60+100+40≦200となるため、余剰判断部204は、演算能力の要求値の合計が、APL103の演算能力値以下であると判断する。なお、判断された情報は、RAM108、RAM110などの記憶領域に記憶される。
 割当部205は、余剰判断部204によって他のコアの演算能力値以下であると判断された場合、他のコアに特定のソフトウェアを割り当てる機能を有する。また、割当部205は、決定部207によって決定されたコアに特定のソフトウェアを割り当ててもよい。具体的には、たとえば、余剰判断部204によってAPL103の演算能力値以下であると判断された場合、割当部205は、APL103にコーデック処理ソフトウェアを割り当てる。なお、割り当て結果は、RAM108、RAM110などの記憶領域に記憶される。
 休止部206は、割当部205によって特定のソフトウェアが他のコアに割り当てられた場合、休止通知部209から通知を受け、特定のコアを休止させる機能を有する。また、休止部206は、割当部205によって特定のソフトウェアが決定部207によって決定されたコアに割り当てられた場合、特定のコアを休止させてもよい。具体的には、たとえば、APL103にコーデック処理ソフトウェアが割り当てられた場合、PMU102は、DSP104を休止させる。なお、休止させたという情報は、RAM110などの記憶領域に記憶される。
 決定部207は、余剰判断部204によって他のコアの演算能力値以下であると判断された場合、他のコアの中から、演算能力値と特定のソフトウェアおよび他のソフトウェアの演算能力の要求値の合計との差分が最大となるコアを決定する機能を有する。
 たとえば、APL103がAPL#1~APL#3という3個のCPUを含む。また、APL#1の演算能力値が100[MIPS]であり、要求値の合計が70[MIPS]であれば、差分は30[MIPS]となる。同様に、APL#2の演算能力値が200[MIPS]であり、要求値の合計が120[MIPS]であれば、差分は80[MIPS]となる。同様に、APL#3の演算能力値が600[MIPS]であり、要求値の合計が580[MIPS]であれば、差分は20[MIPS]となる。
 このとき、決定部207は、APL#1~APL#3から差分が最大となるAPL#2をコーデック処理ソフトウェアを割り当てられるCPUとして決定する。なお、決定されたCPUの情報は、RAM108、RAM110などの記憶領域に記憶される。
 移行部208は、他のコアのうち移行元のコアで実行中である移行対象ソフトウェアを、他のコアのうち移行先のコアに移行させる機能を有する。また、移行部208は、余剰判断部204によって、特定のソフトウェアと移行元のコアの移行対象ソフトウェア以外の残余のソフトウェアとの演算能力の要求値の合計が移行元のコアの演算能力値以下と判断された場合、移行対象ソフトウェアを移行させてもよい。
 たとえば、APL103がAPL#1、APL#2という2個のCPUを含む。さらに、APL#1が移行元のコア、APL#2が移行先のコアとする。APL#1にて実行中のソフトウェアの演算能力の要求値が160[MIPS]であり、移行対象ソフトウェアの演算能力の要求値が20[MIPS]であれば、残余のソフトウェアの演算能力の要求値の合計は160-20=140[MIPS]となる。
 さらに、APL#1の演算能力値が200[MIPS]、特定のソフトウェアの演算能力の要求値が60[MIPS]であれば、140+60≦200となり、余剰判断部204は、移行元のコアの演算能力値以下と判断する。よって、移行部208は、移行対象ソフトウェアをAPL#2に移行させる。なお、移行させた移行対象ソフトウェアの情報は、RAM108、RAM110などの記憶領域に記憶されてもよい。
 休止通知部209は、割当部205によって特定のソフトウェアが他のコアに割り当てられた場合に、特定のコアの休止依頼を通知する機能を有する。具体的には、たとえば、APL103に特定のソフトウェアであるコーデック処理ソフトウェアが割り当てられた後、休止通知部209は、PMU102にDSP104の休止依頼を通知する。なお、休止依頼情報は、RAM108、RAM110などの記憶領域に記憶されてもよい。
 コーデック処理検出部210は、RF回路106によって入出力されたデータに基づいて、コーデック処理が発生するかを検出する機能を有する。具体的には、たとえば、入力されたデータをマルチコアプロセッサシステム100で適用するプロトコルに従って変換した結果、入力されたデータのフォーマットがPCMやADPCMであった場合に、BP101は、コーデック処理が発生することを検出する。なお、検出されたデータは、RAM107、RAM110などの記憶領域に記憶される。
 コーデック処理配布部211は、コーデック処理検出部210によって検出されたコーデック処理をAPL103の演算能力の余剰に基づいて、APL103かDSP104に配布する機能を有する。具体的には、たとえば、APL103の演算能力に余剰があれば、BP101は、コーデック処理をAPL103に配布する。APL103の演算能力に余剰がなければ、BP101は、コーデック処理をDSP104に配布する。なお、APL103かDSP104のどちらにコーデック処理を配布したかという情報は、RAM107、RAM110などの記憶領域に記憶される。
 図3は、マルチコアプロセッサシステム100の各CPUの実行状態の遷移を示す説明図である。マルチコアプロセッサシステム100の状態は、以下の5つの状態のうちいずれか1つの状態になる。状態301は、通話中でなくBP101のみを実行中である。状態302は、通話中でありBP101とDSP104を実行中である。状態303は、通話中でありBP101とAPL103を実行中である。状態304は、通話中でありBP101とAPL103とDSP104を実行中である。状態305は、通話中でなくBP101とAPL103を実行中である。
 マルチコアプロセッサシステム100が状態301の状態で、BP101が通話の検出を行うと、PMU102は、音声コーデック処理を行うDSP104を休止状態から復帰させる。結果、マルチコアプロセッサシステム100は、状態301から状態302に遷移する。また、マルチコアプロセッサシステム100が状態301の状態で、PMU102がキーボード113からの外部割り込みを検出すると、PMU102は、マルチメディア処理を行うAPL103を休止状態から復帰させる。結果、マルチコアプロセッサシステム100は、状態301から状態305に遷移する。
 マルチコアプロセッサシステム100が状態302の状態で、BP101が通話終了の検出を行うと、PMU102は、音声コーデック処理を行うDSP104を休止させる。結果、マルチコアプロセッサシステム100は、状態302から状態301に遷移する。
 また、マルチコアプロセッサシステム100が状態302の状態で、PMU102がキーボード113からの外部割り込みを検出すると、PMU102はマルチメディア処理を行うAPL103を休止状態から復帰させる。さらに、APL103の演算能力に余剰がある場合は、PMU102は、コーデック処理をDSP104からAPL103に移行させる。結果、マルチコアプロセッサシステム100は、状態302から状態303に遷移する。もし、APL103の演算能力に余剰がない場合は、DSP104はコーデック処理を継続する。結果、マルチコアプロセッサシステム100は、状態302から状態304に遷移する。
 マルチコアプロセッサシステム100が状態303の状態で、無操作状態が一定時間を超えタイムアウトした場合は、APL103は、マルチメディア処理を終了する。続けて、PMU102は、DSP104を休止状態から復帰させた後、コーデック処理をAPL103からDSP104に移行させた後、APL103を休止させる。結果、マルチコアプロセッサシステム100は、状態303から状態302に遷移する。
 また、マルチコアプロセッサシステム100が状態303の状態で、更なる外部割り込みを検出しマルチメディア処理が増加し、APL103の演算能力に余剰がなくなった場合、PMU102は、まずDSP104を休止状態から復帰させる。続けて、PMU102はコーデック処理をAPL103からDSP104に移行させる。結果、マルチコアプロセッサシステム100は、状態303から状態304に遷移する。また、マルチコアプロセッサシステム100が状態303の状態で、BP101が通話終了の検出を行うと、APL103は音声コーデック処理を終了する。結果、マルチコアプロセッサシステム100は、状態303から状態305に遷移する。
 マルチコアプロセッサシステム100が状態304の状態で、マルチメディア処理のいくつかが終了し、APL103の演算能力に余剰が発生した場合、PMU102はコーデック処理をDSP104からAPL103に移行させる。続けて、PMU102は、DSP104を休止させる。結果、マルチコアプロセッサシステム100は、状態304から状態303に遷移する。また、マルチコアプロセッサシステム100が状態304の状態で、BP101が通話終了の検出を行うと、PMU102は、音声コーデック処理を行うDSP104を休止させる。結果、マルチコアプロセッサシステム100は、状態304から状態305に遷移する。
 マルチコアプロセッサシステム100が状態305の状態で、BP101が通話の検出を行うと、APL103の演算能力に余剰がある場合は、APL103がコーデック処理を実行する。結果、マルチコアプロセッサシステム100は、状態305から状態303に遷移する。また、APL103の演算能力に余剰がない場合は、PMU102は、DSP104を休止状態から復帰させる。結果、マルチコアプロセッサシステム100は、状態305から状態304に遷移する。
 また、マルチコアプロセッサシステム100が状態305の状態で、無操作状態が一定時間を越えタイムアウトした場合は、APL103は、マルチメディア処理を終了する。マルチメディア処理がすべて終了した場合、PMU102は、APL103を休止させる。結果、マルチコアプロセッサシステム100は、状態305から状態301に遷移する。
 図4は、図3の状態302における各CPUの実行状況と消費電力の説明図である。マルチコアプロセッサシステム100の状態が状態302である場合、BP101とDSP104が通話処理を実行中である。また、DSP104の消費電力を50[mW]とし、APL103の消費電力は、クロックギアの低い順に100[mW]、200[mW]、600[mW]とする。マルチコアプロセッサシステム100の状態302におけるDSP104とAPL103の合計消費電力は、50+0=50[mW]となる。
 図5は、図3の状態304における各CPUの実行状況と消費電力の説明図である。マルチコアプロセッサシステム100の状態が状態304である場合、BP101とAPL103とDSP104が実行中である。APL103は、下から2番目のクロックギアで動作していることを想定する。マルチコアプロセッサシステム100の状態304におけるDSP104とAPL103の合計消費電力は、50+200=250[mW]となる。
 図6は、図3の状態303における各CPUの実行状況と消費電力の説明図である。マルチコアプロセッサシステム100の状態が状態303である場合、BP101とAPL103が実行中である。マルチコアプロセッサシステム100の状態303におけるDSP104とAPL103の合計消費電力は、0+200=200[mW]となる。このように、状態304と状態303を比較すると、マルチコアプロセッサシステム100として実行している処理は一致しているものの、APL103の演算能力の余剰分をコーデック処理に使用しているため、状態303の方が省電力となる。
 図7は、ソフトウェア能力要求テーブル201の記憶内容の一例を示す説明図である。テーブルは、ソフトウェア名称、演算能力の要求値という2つのフィールドを有する。ソフトウェア名称フィールドは、ソフトウェアの名称を格納する。演算能力の要求値フィールドは、ソフトウェアの演算能力の要求値を格納する。
 “ストリーミング再生”ソフトウェアが正常動作するには、たとえば、演算能力は100[MIPS]となる。同様に、“音声再生”ソフトウェアが正常動作するには、たとえば、演算能力は40[MIPS]、“地図表示”ソフトウェアが正常動作するには、演算能力は、たとえば、110[MIPS]となる。また、DSP104が行うコーデック処理と同等の機能を持つ“PCMコーデック”ソフトウェアが正常動作するには、演算能力は、たとえば、60[MIPS]となる。具体的な演算能力の要求値の設定方法については、実行前のシミュレーションや、プロファイラを用いて事前に測定して得られた結果を設定する。
 図7を用いて、マルチコアプロセッサシステム100が状態304から状態303になる場合のAPL103でのマルチメディア処理の実行例を示す。たとえば、APL103の消費電力が200[mW]であり、対応する演算能力が200[MIPS]とする。このとき、APL103で実行しているソフトウェアが、“ストリーミング再生”ソフトウェアと“音声再生”ソフトウェアであれば、両ソフトウェアの演算能力の要求値の合計は140[MIPS]となる。APL103の演算能力が200[MIPS]であり、余剰演算能力は、200-140=60[MIPS]となることから、APL103は、“PCMコーデック”ソフトウェアの正常動作に60[MIPS]を確保できる。この場合は、余剰ありとして、マルチコアプロセッサシステム100の状態が状態304から状態303となる。
 また、APL103で実行しているソフトウェアが、“地図表示”ソフトウェアと“音声再生”ソフトウェアである場合を想定する。この場合の両ソフトウェアの演算能力の要求値の合計は110+40=150[MIPS]となる。余剰演算能力は、200-150=50[MIPS]となることから、APL103は、60[MIPS]を確保できないため、“PCMコーデック”ソフトウェアの正常動作をすることができない。したがって、マルチコアプロセッサシステム100の状態は、状態304を維持する。
 図8A、図8Bは、マルチコアプロセッサシステム100のスケジューリング処理を示すフローチャートである。図8AではPMU102とAPL103のスケジューリング処理を示し、図8BではBP101のスケジューリング処理を示す。
 PMU102は、後述するステップS826、ステップS828、ステップS830、ステップS832、ステップS846、ステップS850、ステップS851から通知を受信すると、PMUイベント取得処理を実行する(ステップS801)。PMUイベント取得処理の詳細は、図9にて後述する。PMU102は、PMUイベント取得処理で出力されたイベントによって処理を分岐する(ステップS802)。出力されたイベントが“外部割り込みイベント”であれば(ステップS802:外部割り込みイベント)、PMU102は、外部割り込み検出処理を実行する(ステップS803)。外部割り込み検出処理の詳細は、図10にて後述する。ステップS803の処理内ではAPL103の状態に応じて、PMU102はAPL103に外部割り込み通知を送信する。外部割り込み検出処理実行後、PMU102は、ステップS801の処理に移行する。
 出力されたイベントが“コーデック結果イベント”であれば(ステップS802:コーデック結果イベント)、PMU102は、コーデック結果処理を実行する(ステップS804)。コーデック結果処理の詳細は、図11にて後述する。コーデック結果処理実行後、PMU102は、ステップS801の処理に移行する。出力されたイベントが“DSP起動要求イベント”であれば(ステップS802:DSP起動要求イベント)、PMU102は、DSP起動要求処理を実行する(ステップS805)。DSP起動要求処理の詳細は、図12にて後述する。ステップS805の処理内では、DSP起動要求を行った要求元に応じて、PMU102は、APL103か、BP101にDSP起動完了通知を送信する。DSP起動要求処理実行後、PMU102は、ステップS801の処理に移行する。
 出力されたイベントが“余剰ありイベント”であれば(ステップS802:余剰ありイベント)、PMU102は、余剰あり処理を実行する(ステップS806)。余剰あり処理の詳細は、図13にて後述する。また、ステップS806の処理内で、PMU102は、BP101に余剰あり通知を送信する。余剰あり処理実行後、PMU102は、ステップS801の処理に移行する。出力されたイベントが“APLスリープ要求イベント”であれば(ステップS802:APLスリープ要求イベント)、PMU102は、APL103を休止させる(ステップS807)。実行後、PMU102は、ステップS801の処理に移行する。
 次に、APL103のフローチャートを説明する。APL103は、通知を受信するまで休止する(ステップS821)。具体的な休止方法としては、たとえば、PMU102がAPL103に対して電力の供給を停止することで、APL103を休止状態にさせる。
 続けて、ステップS803、ステップS805、または、後述するステップS845、ステップS849から通知を受け取ると、APL103は、受信した通知を取得する(ステップS822)。次に、APL103は外部割り込み処理を開始する(ステップS823)。具体的には、APL103は、外部割り込み処理に対応したマルチメディア処理としてストリーミング再生ソフトウェア、音声再生ソフトウェアなどを実行する。
 外部割り込み処理開始後、APL103は、余剰判断処理を実行する(ステップS824)。余剰判断処理の詳細は、図14、図15A、図15Bにて後述する。判断結果により、APL103は、余剰ありか否かを判断する(ステップS825)。余剰ありと判断された場合(ステップS825:Yes)、APL103は、PMU102へ余剰あり通知を送信する(ステップS826)。送信後、APL103は、ステップS822の処理にてコーデック処理依頼通知を受けたかを判断する(ステップS827)。
 コーデック処理依頼通知を受けていた場合(ステップS827:Yes)、APL103は、コーデック開始処理を実行する(ステップS828)。コーデック開始処理の詳細は、図16にて後述する。ステップS828の処理内ではDSP104の休止状態であれば、APL103はPMU102にDSP起動要求通知を送信する。また、コーデック処理が終了した場合、APL103は、コーデック処理の結果をBP101へ通知する。
 コーデック開始処理実行後、APL103は、外部割り込み処理が終了したかを判断する(ステップS831)。外部割り込み処理が終了した場合(ステップS831:Yes)、APL103は、外部割り込み終了処理を実行する(ステップS832)。外部割り込み終了処理の詳細は、図18にて後述する。ステップS832の処理内ではPMU102に余剰あり通知を送信していた場合、APL103はPMU102に余剰ありの取り消し通知を送信する。
 外部割り込み終了処理終了後、APL103は、ステップS821の処理に移行する。外部割り込み処理が終了していない場合(ステップS831:No)、APL103は、タスクディスパッチが発生したかを判断する(ステップS833)。タスクディスパッチが発生した場合(ステップS833:Yes)、再び外部割り込み処理が発生したことになるため、APL103は、ステップS823の処理に移行する。タスクディスパッチが発生していない場合(ステップS833:No)、APL103は、ステップS831の処理に移行する。
 余剰なしと判断された場合(ステップS825:No)、APL103は、コーデック処理依頼通知を受けたかを判断する(ステップS829)。コーデック処理依頼通知を受けていた場合(ステップS829:Yes)、APL103は、DSPコーデック処理を実行する(ステップS830)。DSPコーデック処理の詳細は、図17にて後述する。ステップS830の処理内ではDSP104が休止状態であれば、APL103はPMU102にDSP起動要求通知を送信する。DSPコーデック処理後、APL103は、ステップS831の処理に移行する。コーデック処理依頼通知を受けていない場合も(ステップS827:No、ステップS829:No)、APL103は、ステップS831の処理に移行する。
 次に、図8Bを用いてBP101のスケジューリング処理を説明する。BP101は、コーデック処理が発生したかを判断する(ステップS841)。コーデック処理が発生していない場合(ステップS841:No)、BP101は一定時間後に、再びステップS841の処理を実行する。コーデック処理が発生した場合(ステップS841:Yes)、BP101は、ステップS805、ステップS806、ステップS828から送信され、BP101が受信した通知を取得する(ステップS842)。通知を取得後、BP101は、コーデック処理をDSP104かAPL103が現在実行しているかを判断する(ステップS843)。
 コーデック処理が実行されている場合(ステップS843:Yes)、BP101は、PMU102からAPL103の余剰あり通知を受信したかを判断する(ステップS844)。余剰あり通知を受信していない場合(ステップS844:No)、BP101は、DSP104またはAPL103からコーデック処理の結果を受信したかを判断する(ステップS847)。コーデック処理の結果を受信した場合(ステップS847:Yes)、BP101は、PMU102へ、コーデック処理結果受け取り通知を送信する(ステップS851)。送信後、BP101は、ステップS841の処理に移行する。
 コーデック処理の結果を受信していない場合(ステップS847:No)、BP101は、ステップS842の処理に移行する。余剰あり通知を受信した場合(ステップS844:Yes)、BP101は、APL103へコーデック処理依頼通知を送信する(ステップS845)。送信後、BP101は、PMU102へ、APL103への配布完了通知を送信し(ステップS846)、ステップS842の処理に移行する。
 コーデック処理がDSP104でもAPL103でも実行されていない場合(ステップS843:No)、BP101は、PMU102からAPL103の余剰あり通知を受信したかを判断する(ステップS848)。余剰あり通知を受信した場合(ステップS848:Yes)、BP101は、APL103へコーデック処理依頼通知を送信し(ステップS849)、ステップS842の処理に移行する。余剰あり通知を受信していない場合(ステップS848:No)、BP101は、DSPコーデック処理を実行し(ステップS850)、ステップS842の処理に移行する。ステップS850の処理内ではDSP104が休止状態であれば、BP101はPMU102にDSP起動要求通知を送信する。
 図9は、PMUイベント取得処理を示すフローチャートである。PMU102は、割り込みまたは通知を受信するまで待機する(ステップS901)。PMU102は、割り込みまたは通知を取得し(ステップS902)、余剰ありの取り消し通知を取得したかを判断する(ステップS903)。余剰ありの取り消し通知を取得した場合(ステップS903:Yes)、PMU102は、通知を記憶するキューの中から余剰あり通知を削除し(ステップS904)、再びステップS901の処理に移行する。
 取得した通知が余剰ありの取り消し通知でない場合(ステップS903:No)、PMU102は、外部割り込みを取得したかを判断する(ステップS905)。外部割り込みを取得した場合(ステップS905:Yes)、PMU102は、外部割り込みイベントを出力し(ステップS906)、PMUイベント処理を終了する。外部割り込みを取得していない場合(ステップS905:No)、PMU102は、BP101からのコーデック処理結果受け取り通知を取得したかを判断する(ステップS907)。コーデック処理結果受け取り通知を取得した場合(ステップS907:Yes)、PMU102は、コーデック結果イベントを出力し(ステップS908)、PMUイベント処理を終了する。
 コーデック処理結果受け取り通知を取得していない場合(ステップS907:No)、PMU102は、DSP起動要求通知を取得したかを判断する(ステップS909)。DSP起動要求通知を取得した場合(ステップS909:Yes)、PMU102は、DSP起動要求イベントを出力し(ステップS910)、PMUイベント処理を終了する。DSP起動要求通知を取得していない場合(ステップS909:No)、PMU102は、余剰あり通知を取得したかを判断する(ステップS911)。余剰あり通知を取得した場合(ステップS911:Yes)、PMU102は、余剰ありイベントを出力し(ステップS912)、PMUイベント処理を終了する。
 余剰あり通知を取得していない場合(ステップS911:No)、PMU102は、APL103からのスリープ要求通知を取得したかを判断する(ステップS913)。スリープ要求通知を取得した場合(ステップS913:Yes)、PMU102は、APLスリープ要求イベントを出力し(ステップS914)、PMUイベント処理を終了する。APLスリープ要求通知を取得していない場合(ステップS913:No)、ステップS902にて取得した通知は破棄し、ステップS901の処理に移行する。
 図10は、外部割り込み検出処理を示すフローチャートである。PMU102は、APL103が起動中かを判断する(ステップS1001)。APL103が起動中でない場合(ステップS1001:No)、PMU102は、APL103を起動させる(ステップS1002)。APLが起動中の場合(ステップS1001:Yes)、またはステップS1002の処理後、PMU102は、APL103へ外部割り込み通知を送信し(ステップS1003)、外部割り込み検出処理を終了する。
 図11は、コーデック結果処理を示すフローチャートである。PMU102は、DSP104が起動中かを判断する(ステップS1101)。起動中である場合(ステップS1101:Yes)、PMU102は、DSP104を休止させ(ステップS1102)、コーデック結果処理を終了する。DSP104が起動中でない場合も(ステップS1101:No)、PMU102はコーデック結果処理を終了する。
 図12は、DSP起動要求処理を示すフローチャートである。PMU102は、DSP104を起動させる(ステップS1201)。DSP104の起動後、PMU102は、APL103からDSP起動要求通知を受信したかを判断する(ステップS1202)。APL103からDSP起動要求通知を受信した場合(ステップS1202:Yes)、PMU102は、APL103へDSP起動完了通知を送信する(ステップS1203)。ステップS1203の処理後、またBP101からDSP起動要求通知を受信していない場合(ステップS1202:No)、PMU102は、BP101へDSP起動完了通知を送信し(ステップS1204)、DSP起動要求処理を終了する。
 図13は、余剰あり処理を示すフローチャートである。PMU102は、BP101へ余剰あり通知を送信する(ステップS1301)。送信後、PMU102は、BP101からAPL103への配布完了通知を受信したかを判断する(ステップS1302)。配布完了通知を受信していない場合(ステップS1302:No)、PMU102は、一定時間後に、再びステップS1302の処理に移行する。
 配布完了通知を受信した場合(ステップS1302:Yes)、PMU102は、DSP104が起動中かを判断する(ステップS1303)。DSP104が起動中の場合(ステップS1303:Yes)、PMU102は、DSP104を休止させ(ステップS1304)、余剰あり処理を終了する。DSP104が起動中でない場合(ステップS1303:No)、PMU102は、余剰あり処理を終了する。
 図14、図15A、図15Bは、余剰判断処理を示すフローチャートである。図14では、マルチコアプロセッサシステム100でのAPL103の個数が単数である場合のフローチャートを示し、図15A、図15Bでは、マルチコアプロセッサシステム100でのAPL103の個数が複数である場合のフローチャートを示す。
 図14は、APL103が単数の場合における余剰判断処理を示すフローチャートである。APL103は、ソフトウェア能力要求テーブル201から、コーデック処理ソフトウェアの演算能力の要求値Cを取得する(ステップS1401)。続けて、APL103は、変数kを1に設定する(ステップS1402)。
 設定後、APL103は、ソフトウェア能力要求テーブル201から、APL103で実行されているk番目のソフトウェアの演算能力の要求値A(k)を取得する(ステップS1403)。取得後、APL103は、変数kをインクリメントし(ステップS1404)、変数kがAPL103で実行中のソフトウェア数以下かを判断する(ステップS1405)。変数kが実行中のソフトウェア数以下である場合(ステップS1405:Yes)、APL103は、ステップS1403の処理に移行する。
 変数kが実行中のソフトウェア数を越えた場合(ステップS1405:No)、APL103は、APL103の現在のクロックギアnに対する演算能力P(n)を取得する(ステップS1406)。ステップS1403、ステップS1406で取得した値を使用して、APL103は、不等式ΣkA(k)+C≦P(n)が成り立つかを判断する(ステップS1407)。不等式が成り立つ場合(ステップS1407:Yes)、APL103は、余剰ありとして判断し(ステップS1408)、余剰判断処理を終了する。不等式が成り立たない場合(ステップS1407:No)、APL103は、余剰なしとして判断し(ステップS1409)、余剰判断処理を終了する。
 図15A、図15Bは、APL103が複数の場合における余剰判断処理を示すフローチャートである。図15A、図15Bでは、APL103がAPL#1、APL#2、・・・、APL#MまでのM個のCPUを含む。また、APL103が複数存在した場合、APL103が実行していたスケジューリング処理は、APL#1~APL#Mのいずれか一つのCPUが行う。図15A、図15Bのフローチャートは、APL#1が実行している状態を説明している。
 APL#1は、ソフトウェア能力要求テーブル201から、コーデック処理ソフトウェアの演算能力の要求値Cを取得する(ステップS1501)。取得後、APL#1は、変数xに1を設定する(ステップS1502)。設定後、APL#1は、x番目のAPLを選択する(ステップS1503)。選択後、APL#1は、変数kに1を設定する(ステップS1504)。設定後、APL#1は、ソフトウェア能力要求テーブル201から、APL#xで実行されているk番目のソフトウェアの演算能力の要求値Ax(k)を取得する(ステップS1505)。
 取得後、APL#1は、変数kをインクリメントし(ステップS1506)、変数kがAPL#xで実行中のソフトウェア数以下かを判断する(ステップS1507)。変数kが実行中のソフトウェア数以下である場合(ステップS1507:Yes)、APL#1は、ステップS1505の処理に移行する。変数kが実行中のソフトウェア数を越えた場合(ステップS1507:No)、APL#1は、APL#xの、現在のクロックギアnxに対する演算能力Px(nx)を取得する(ステップS1508)。取得後、APL#1は、APL#1は変数xをインクリメントし(ステップS1509)、変数xがAPLの個数以下かを判断する(ステップS1510)。変数xがAPLの個数以下である場合(ステップS1510:Yes)、ステップS1503の処理に移行する。
 変数xがAPLの個数以下でない場合(ステップS1510:No)、APL#1は、不等式ΣxΣkAx(k)+C≦ΣxPx(nx)が成り立つかを判断する(ステップS1511)。不等式が成り立たない場合(ステップS1511:No)、APL#1は、余剰なしと判断し(ステップS1520)、余剰判断処理を終了する。不等式が成り立つ場合(ステップS1511:Yes)、APL#1は、変数xを1に設定する(ステップS1512)。
 続けてAPL#1は、APL#xでのコーデック割り当て後の余剰演算能力S(x)をS(x)=Px(nx)-{ΣkAx(k)+C}として算出する(ステップS1513)。算出後、APL#1は、変数xをインクリメントし(ステップS1514)、変数xがAPLの個数以下であるかを判断する(ステップS1515)。変数xがAPLの個数以下である場合(ステップS1515:Yes)、APL#1は、ステップS1513の処理に移行する。
 変数xがAPLの個数以下でない場合(ステップS1515:No)、APL#1は、Max(S(x))が0以上となるかを判断する(ステップS1516)。Max(S(x))が0以上である場合(ステップS1516:Yes)、APL#1は、Max(S(x))となるAPL#xを余剰ありのCPUとして判断し(ステップS1519)、余剰判断処理を終了する。Max(S(x))が0未満である場合(ステップS1516:No)、APL#1~APL#Mは、APL#1~APL#Mでソフトウェアのリスケジューリング、またはマイグレーションを行う(ステップS1517)。
 ステップS1517の処理の結果、APL#1は、APL#1~APL#Mの中で、Max(S(x))≧0となるAPL#xが存在するかを判断する(ステップS1518)。APL#xが存在する場合(ステップS1518:Yes)、APL#1は、ステップS1519の処理に移行する。APL#xが存在しない場合(ステップS1518:No)、APL#1は、ステップS1520の処理に移行する。
 ステップS1517の処理であるリスケジューリング、またはマイグレーションはAPL#1~APL#Mの余剰演算能力S(x)がコーデック処理ソフトウェアの演算能力の要求値Cを超えるように実行される。以下に、具体的なマイグレーションの例を示す。具体的には、たとえば、APLがAPL#1、APL#2と2つ存在し、それぞれのクロックギアからAPL#1の演算能力が100[MIPS]、APL#2の演算能力が200[MIPS]である場合を想定する。
 また、APL#1にて実行されているソフトウェアがソフトウェアA、ソフトウェアBと2つあり、演算能力の要求値が、それぞれ60[MIPS]、20[MIPS]であるとする。また、APL#2にて実行されているソフトウェアがソフトウェアC、ソフトウェアDと2つあり、演算能力の要求値が、140[MIPS]、20[MIPS]であるとする。また、コーデック処理ソフトウェアの演算能力の要求値Cが60[MIPS]であるとする。
 このとき、ステップS1511の不等式は、(60+20)+(140+20)+60≦100+200となるため、APL#1は、ステップS1511:Yesのルートを処理する。続けて、ステップS1516にて、S(1)=-40、S(2)=-20となり、APL#1は、ステップS1517:Noのルートを処理する。
 ステップS1517の処理にて、APL#1、APL#2は、APL#2で実行中のソフトウェアDを移行対象ソフトウェアとしてAPL#1に移行させることで、S(2)=0となり、APL#1は、ステップS1518:Yesのルートを処理することになる。このように、APL#1、APL#2の中で、コーデック処理ソフトウェアの演算能力の要求値Cを越えるようにAPL#1、APL#2はリスケジューリング、またはマイグレーションを行う。マイグレーションの対象となる移行対象ソフトウェアの検索処理の一例を示すフローチャートは、図19にて後述する。
 図16は、コーデック開始処理を示すフローチャートである。APL103は、コーデック処理を開始する(ステップS1601)。コーデック処理中に、APL103は、外部割り込み処理が終了したか、または、APL103の演算能力に余剰がなくなったかを判断する(ステップS1602)。外部割り込み処理が終了していなく、かつ、APL103の演算能力に余剰がある場合(ステップS1602:No)、APL103は、コーデック処理が終了したかを判断する(ステップS1603)。コーデック処理が終了していない場合、APL103は、ステップS1602の処理に移行する。
 コーデック処理が終了した場合(ステップS1603:Yes)、APL103は、BP101へコーデック処理の結果を返却する(ステップS1604)。結果を返却後、APL103は、コーデック処理の依頼通知を引き続き受信したかを判断する(ステップS1606)。受信していない場合(ステップS1606:No)、APL103は、コーデック開始処理を終了する。
 コーデック処理の依頼通知を受信していた場合(ステップS1606:Yes)、APL103は、ステップS1601の処理に移行する。外部割り込み処理が終了したか、または、APL103の演算能力に余剰がなくなった場合(ステップS1602:Yes)、APL103は、DSPコーデック処理を実行し(ステップS1605)、コーデック開始処理を終了する。
 図17は、DSPコーデック処理を示すフローチャートである。DSPコーデック処理は、BP101か、APL103によって実行される。図17の例では、DSPコーデック処理がBP101にて実行される場合を想定する。
 BP101は、PMU102へDSP起動要求通知を送信する(ステップS1701)。DSP起動要求通知を送信後、BP101は、PMU102からDSP起動完了通知を受信したかを判断する(ステップS1702)。DSP起動完了通知を受信していない場合(ステップS1702:No)、BP101は、一定時間後、再びステップS1702の処理に移行する。
 DSP起動完了通知を受信した場合(ステップS1702:Yes)、BP101は、APL103にてコーデック処理を実行していたかを判断する(ステップS1703)。APL103にてコーデック処理を実行していた場合(ステップS1703:Yes)、BP101は、APL103からDSP104にコーデック処理を移行し(ステップS1704)、DSPコーデック処理を終了する。APL103にてコーデック処理を実行していなかった場合(ステップS1703:No)、BP101は、DSP104へコーデック処理を配布し(ステップS1705)、DSPコーデック処理を終了する。
 図18は、外部割り込み終了処理を示すフローチャートである。APL103は、PMU102へ余剰あり通知を送信したかを判断する(ステップS1801)。余剰あり通知を送信した場合(ステップS1801:Yes)、APL103は、PMU102へ余剰ありの取り消し通知を送信する(ステップS1802)。余剰あり通知を送信していない場合(ステップS1801:No)、または、ステップS1802の終了後、APL103は、PMU102へAPLスリープ要求を送信し(ステップS1803)、外部割り込み終了処理を終了する。
 なお、余剰ありの取り消し通知を送信する際には、APL103は、PMU102の通知を格納するキューの一番先頭に、余剰ありの取り消し通知を格納してもよい。これにより、PMU102がステップS902にて通知を取得する際に、余剰あり通知より先に余剰ありの取り消し通知を取得でき、PMU102は、余剰あり通知を削除することができる。
 図19は、ステップS1517におけるマイグレーションの対象となる移行対象ソフトウェアの検索処理の一例を示すフローチャートである。APL#1は、変数xに1を設定し(ステップS1901)、変数kにも1を設定する(ステップS1902)。設定後、APL#1は、APL#xのk番目のソフトウェアにおいて、S(x)+A(k)を算出する(ステップS1903)。
 算出後、APL#1は、変数kをインクリメントし(ステップS1904)、変数kが実行中のソフトウェア以下かを判断する(ステップS1905)。変数kが実行中のソフトウェア数以下である場合(ステップS1905:Yes)、APL#1は、ステップS1903の処理に移行する。変数kが実行中のソフトウェア数を越えた場合(ステップS1905:No)、APL#1は、変数xをインクリメントし(ステップS1906)、変数xがAPLの個数以下かを判断する(ステップS1907)。変数xがAPLの個数以下である場合(ステップS1907:Yes)、APL#1はステップS1902の処理に移行する。
 変数xがAPLの個数より大きい場合(ステップS1907:No)、APL#1は、算出されたS(x)+A(k)のうち、S(x)+A(k)≧0となり、最も最小のS(x)+A(k)となるx、kをx1、k1に設定する(ステップS1908)。APL#x1が移行元のCPUとなり、APL#x1のk1番目のソフトウェアが移行対象ソフトウェアになる。S(x1)+A(k1)≧0となるx1、k1が存在しなかった場合、APL#1は値を設定しない。なお、S(x1)+A(k1)≧0については、以下のように変形できる。
 S(x1)+A(k1)≧0
⇔Px(nx1)-{ΣkAx(k)+C}+A(k1)≧0
⇔Px(nx1)≧{ΣkAx(k)-A(k1)}+C
 {ΣkAx(k)-A(k1)}+Cは、移行対象ソフトウェア以外の残余のソフトウェアとコーデック処理の演算能力の要求値の合計となる。したがって、S(x1)+A(k1)≧0を満たすことは、前述の合計がAPL#x1の演算能力値以下となることと同値である。
 APL#1は、x1、k1に値が設定されたかを判断する(ステップS1909)。値が設定されていない場合(ステップS1909:No)、APL#1は、移行対象ソフトウェアが見つからなかったとして出力し(ステップS1916)、移行対象ソフトウェアの検索処理を終了する。値が設定された場合(ステップS1909:Yes)、APL#1は、変数xに1を設定する(ステップS1910)。
 設定後、APL#1は、変数xがAPLの個数以下かを判断する(ステップS1911)。変数xがAPLの個数より大きい場合(ステップS1911:No)、APL#1はステップS1916の処理に移行する。変数xがAPLの個数以下である場合(ステップS1911:Yes)、APL#1は変数xとx1が等しいかを判断する(ステップS1912)。変数xとx1が等しい場合(ステップS1912:Yes)、APL#1は変数xをインクリメントし(ステップS1914)、ステップS1911の処理に移行する。
 変数xとx1が等しくない場合(ステップS1912:No)、APL#1は、不等式Px(nx)-ΣkA(k)-A(k1)≧0が成り立つかを判断する(ステップS1913)。不等式が成り立たない場合(ステップS1913:No)、APL#1は、ステップS1914の処理に移行する。不等式が成り立つ場合(ステップS1913:Yes)、APL#1は、APL#x1が移行元のCPU、APL#x1のk1番目のソフトウェアが移行対象ソフトウェア、APL#xが移行先のCPUであると出力する(ステップS1915)。出力後、APL#1は、移行対象ソフトウェアの検索処理を終了する。
 図19の例では、移行対象ソフトウェアが1つの場合を例に挙げたが、複数のソフトウェアを移行対象ソフトウェアとして、移行元のAPLの演算能力にコーデック処理ソフトウェアの演算能力の要求値C分の余剰が生まれるようにしてもよい。
 以上説明したように、マルチコアプロセッサシステム、電力制御方法、および電力制御プログラムによれば、特定のコアで実行される機能を持つ特定のソフトウェアと他のコアで実行中の他のソフトウェアの演算能力の合計が他のコアの演算能力以内かを判断する。演算能力以内なら、マルチコアプロセッサシステムは、特定のソフトウェアを他のコアに割り当て、特定のコアを休止させる。これにより、マルチコアプロセッサシステムは、他のコアで発生していた演算能力の余剰を有効活用し、特定のコアが使用する電力分省電力化を図ることができる。
 また、マルチコアプロセッサシステムは、他のコアの中で、演算能力の余剰が最大となるコアに、特定のソフトウェアを割り当ててもよい。これにより、マルチコアプロセッサシステムは、特定のコアの分省電力化を図ることができる。さらに、マルチコアプロセッサシステムは、他のコアの負荷が均等に近づくように特定のソフトウェアを割り当てることができる。
 また、マルチコアプロセッサシステムは、移行元のコアで実行中の移行対象ソフトウェアを移行先のコアに移行させ、移行元のコアに、特定のソフトウェアを割り当ててもよい。これにより、マルチコアプロセッサシステムは、他のコアのおのおのの演算能力の余剰が、特定のソフトウェアの演算能力の要求値に届かなくても、演算能力の余剰を1つのコアに集めることで特定のソフトウェアを前述の1つのコアで実行でき、省電力化を図れる。
 また、マルチコアプロセッサシステムは、特定のソフトウェアと他のコアごとに実行中のソフトウェアとの演算能力の要求値の合計が、他のコアの演算能力値の合計以下である場合に、移行対象ソフトウェアを移行してもよい。これにより、マルチコアプロセッサシステムは、演算能力の余剰をまとめる前に、特定のソフトウェアを他のコアの1つのコアで実行できるか否かが判断でき、無駄な移行処理を行わずに済む。
 なお、本実施の形態で説明した電力制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本電力制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本電力制御プログラムは、インターネット等のネットワークを介して配布してもよい。
 101 BP
 102 PMU
 103 APL
 104 DSP
 105 アンテナ
 106 RF回路
 108 RAM
 114 バス
 201 ソフトウェア能力要求テーブル
 202 検出部
 203 抽出部
 204 余剰判断部
 205 割当部
 206 休止部
 207 決定部
 208 移行部
 209 休止通知部
 210 コーデック処理検出部
 211 コーデック処理配布部

Claims (6)

  1.  特定の処理を実行する特定のコアとは異なる他のコアにおいて、複数のソフトウェアのうち特定のソフトウェアは前記特定の処理と同等の機能を有し、前記複数のソフトウェアのうち前記特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出する検出手段と、
     前記検出手段によって前記他のソフトウェアが前記他のコアに実行中である状態が検出された場合、前記複数のソフトウェアのうち、当該ソフトウェアごとに演算能力の要求値を記憶したデータベースから、前記特定のソフトウェアと前記他のソフトウェアとの演算能力の要求値を抽出する抽出手段と、
     前記抽出手段によって抽出された前記特定のソフトウェアと前記他のソフトウェアとの演算能力の要求値の合計が、前記他のコアの演算能力値以下か否かを判断する判断手段と、
     前記判断手段によって、前記演算能力の要求値の合計が前記他のコアの演算能力値以下であると判断された場合、前記他のコアに前記特定のソフトウェアを割り当てる割当手段と、
     前記割当手段によって前記特定のソフトウェアが前記他のコアに割り当てられた場合、前記特定のコアを休止させる休止手段と、
     を備えることを特徴とするマルチコアプロセッサシステム。
  2.  前記判断手段によって、前記演算能力の要求値の合計が前記他のコアの演算能力値以下であると判断された場合、前記他のコアの中から、前記演算能力値と前記特定のソフトウェアおよび前記他のソフトウェアの演算能力の要求値の合計との差分が最大となるコアを決定する決定手段を備え、
     前記割当手段は、
     前記決定手段によって決定されたコアに前記特定のソフトウェアを割り当て、
     前記休止手段は、
     前記割当手段によって前記特定のソフトウェアが前記決定されたコアに割り当てられた場合、前記特定のコアを休止させることを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3.  前記他のコアのうち移行元のコアで実行中である移行対象ソフトウェアを、前記他のコアのうち移行先のコアに移行させる移行手段をさらに備え、
     前記判断手段は、
     前記抽出手段によって抽出された前記特定のソフトウェアと前記移行元のコアの前記移行対象ソフトウェア以外の残余のソフトウェアとの演算能力の要求値の合計が、前記移行元のコアの演算能力値以下か否かを判断し、
     前記移行手段は、
     前記判断手段によって前記移行元のコアの演算能力値以下と判断された場合、前記移行元のコアの前記移行対象ソフトウェアを前記移行先のコアに移行させ、
     前記割当手段は、
     前記移行手段によって前記移行対象ソフトウェアが移行させられた後、前記移行元のコアに前記特定のソフトウェアを割り当てることを特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4.  前記判断手段は、
     前記抽出手段によって抽出された前記特定のソフトウェアと前記他のコアごとに実行中のソフトウェア群との演算能力の要求値の合計が、前記他のコアの演算能力値の合計以下であり、かつ、前記抽出手段によって抽出された前記移行元のコアの前記移行対象ソフトウェア以外の残余のソフトウェアと前記特定のソフトウェアとの演算能力の要求値の合計が、前記移行元のコアの演算能力値以下か否かを判断することを特徴とする請求項3に記載のマルチコアプロセッサシステム。
  5.  特定の処理を実行する特定のコアとは異なる他のコアにおいて、複数のソフトウェアのうち特定のソフトウェアは前記特定の処理と同等の機能を有し、前記複数のソフトウェアのうち前記特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出する検出工程と、
     前記検出工程によって前記他のソフトウェアが前記他のコアに実行中である状態が検出された場合、前記複数のソフトウェアのうち、当該ソフトウェアごとに演算能力の要求値を記憶したデータベースから、前記特定のソフトウェアと前記他のソフトウェアとの演算能力の要求値を抽出する抽出工程と、
     前記抽出工程によって抽出された前記特定のソフトウェアと前記他のソフトウェアとの演算能力の要求値の合計が、前記他のコアの演算能力値以下か否かを判断する判断工程と、
     前記判断工程によって、前記演算能力の要求値の合計が前記他のコアの演算能力値以下であると判断された場合、前記他のコアに前記特定のソフトウェアを割り当てる割当工程と、
     前記割当工程によって前記特定のソフトウェアが前記他のコアに割り当てられた場合、前記特定のコアの休止依頼を通知する休止通知工程と、
     を前記他のコアが実行することを特徴とした電力制御方法。
  6.  特定の処理を実行する特定のコアとは異なる他のコアにおいて、複数のソフトウェアのうち特定のソフトウェアは前記特定の処理と同等の機能を有し、前記複数のソフトウェアのうち前記特定のソフトウェアとは異なる他のソフトウェアが実行中であることを検出する検出工程と、
     前記検出工程によって前記他のソフトウェアが前記他のコアに実行中である状態が検出された場合、前記複数のソフトウェアのうち、当該ソフトウェアごとに演算能力の要求値を記憶したデータベースから、前記特定のソフトウェアと前記他のソフトウェアとの演算能力の要求値を抽出する抽出工程と、
     前記抽出工程によって抽出された前記特定のソフトウェアと前記他のソフトウェアとの演算能力の要求値の合計が、前記他のコアの演算能力値以下か否かを判断する判断工程と、
     前記判断工程によって、前記演算能力の要求値の合計が前記他のコアの演算能力値以下であると判断された場合、前記他のコアに前記特定のソフトウェアを割り当てる割当工程と、
     前記割当工程によって前記特定のソフトウェアが前記他のコアに割り当てられた場合、前記特定のコアの休止依頼を通知する休止通知工程と、
     を前記他のコアに実行させることを特徴とした電力制御プログラム。
PCT/JP2010/055966 2010-03-31 2010-03-31 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム WO2011121786A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2012508002A JP5472449B2 (ja) 2010-03-31 2010-03-31 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
EP10848962.6A EP2555112A4 (en) 2010-03-31 2010-03-31 MULTI-CYCLE PROCESSOR SYSTEM, POWER CONTROL METHOD AND PERFORMANCE CONTROL METHOD
CN201080065829XA CN102822803A (zh) 2010-03-31 2010-03-31 多核处理器系统、电力控制方法及电力控制程序
PCT/JP2010/055966 WO2011121786A1 (ja) 2010-03-31 2010-03-31 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
US13/630,526 US9037888B2 (en) 2010-03-31 2012-09-28 Multi-core processor system, electrical power control method, and computer product for migrating process from one core to another
US14/689,603 US20150220362A1 (en) 2010-03-31 2015-04-17 Multi-core processor system, electrical power control method, and computer product for migrating process from one core to another

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/055966 WO2011121786A1 (ja) 2010-03-31 2010-03-31 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/630,526 Continuation US9037888B2 (en) 2010-03-31 2012-09-28 Multi-core processor system, electrical power control method, and computer product for migrating process from one core to another

Publications (1)

Publication Number Publication Date
WO2011121786A1 true WO2011121786A1 (ja) 2011-10-06

Family

ID=44711571

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/055966 WO2011121786A1 (ja) 2010-03-31 2010-03-31 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム

Country Status (5)

Country Link
US (2) US9037888B2 (ja)
EP (1) EP2555112A4 (ja)
JP (1) JP5472449B2 (ja)
CN (1) CN102822803A (ja)
WO (1) WO2011121786A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016528623A (ja) * 2013-07-31 2016-09-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ受信リンク内でコンピューティング要素を割り振るための方法、装置、およびコンピュータ・プログラム(データ受信リンク内でのコンピューティング要素割振り)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150005A (zh) * 2013-03-01 2013-06-12 福州瑞芯微电子有限公司 非对称低功耗移动设备的多核结构
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
CN105005373A (zh) * 2015-07-13 2015-10-28 中国科学院计算机网络信息中心 超级计算机中基于PCI Express总线的多GPU供电控制装置及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11202988A (ja) * 1998-01-13 1999-07-30 Hitachi Ltd システム消費電力制御方法
JP2004126968A (ja) * 2002-10-03 2004-04-22 Fujitsu Ltd 並列計算機のジョブスケジューリング装置
JP2005267635A (ja) * 2004-03-16 2005-09-29 Sony Computer Entertainment Inc マルチプロセッサシステムの電力損失を低減する方法、装置およびプロセッサ
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008276395A (ja) 2007-04-26 2008-11-13 Toshiba Corp 情報処理装置およびプログラム実行制御方法
JP2009175850A (ja) * 2008-01-22 2009-08-06 Nec Corp マルチ演算処理システム、マルチ演算処理方法、およびマルチ演算処理プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185589A (ja) 1996-01-05 1997-07-15 Toshiba Corp 情報処理システムと情報処理システムの省電力方法
JPH09274608A (ja) 1996-04-04 1997-10-21 Hitachi Ltd マルチプロセッサシステムにおけるプロセッサ間の負荷配分制御方法
JP3006551B2 (ja) 1996-07-12 2000-02-07 日本電気株式会社 複数コンピュータ間の業務分散システム、業務分散方法および業務分散プログラムを記録した記録媒体
US6006248A (en) 1996-07-12 1999-12-21 Nec Corporation Job application distributing system among a plurality of computers, job application distributing method and recording media in which job application distributing program is recorded
JP2000137692A (ja) 1998-10-30 2000-05-16 Toshiba Corp 分散ノード間負荷分散方式
US6804632B2 (en) 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
JP4090908B2 (ja) 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
JP2004287801A (ja) 2003-03-20 2004-10-14 Sony Computer Entertainment Inc 情報処理システム、情報処理装置、分散情報処理方法及びコンピュータプログラム
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
EP1715405A1 (en) 2005-04-19 2006-10-25 STMicroelectronics S.r.l. Processing method, system and computer program product for dynamic allocation of processing tasks in a multiprocessor cluster platforms with power adjustment
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US8161482B1 (en) * 2007-04-13 2012-04-17 Marvell International Ltd. Power optimization for multi-core devices
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US20100318827A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Energy use profiling for workload transfer
US8381005B2 (en) * 2009-12-18 2013-02-19 International Business Machines Corporation Processor and memory folding for managing power consumption in information processing systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11202988A (ja) * 1998-01-13 1999-07-30 Hitachi Ltd システム消費電力制御方法
JP2004126968A (ja) * 2002-10-03 2004-04-22 Fujitsu Ltd 並列計算機のジョブスケジューリング装置
JP2005267635A (ja) * 2004-03-16 2005-09-29 Sony Computer Entertainment Inc マルチプロセッサシステムの電力損失を低減する方法、装置およびプロセッサ
JP2008191949A (ja) * 2007-02-05 2008-08-21 Nec Corp マルチコアシステムおよびマルチコアシステムの負荷分散方法
JP2008276395A (ja) 2007-04-26 2008-11-13 Toshiba Corp 情報処理装置およびプログラム実行制御方法
JP2009175850A (ja) * 2008-01-22 2009-08-06 Nec Corp マルチ演算処理システム、マルチ演算処理方法、およびマルチ演算処理プログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Zuno-Hodan", SEMICONDUCTOR OF JAPAN - IS A PORTABLE TELEPHONE A TRIGGER FOR ITS REVITALIZATION?, no. 44, 18 March 2010 (2010-03-18), Retrieved from the Internet <URL:www.atmarkit.co.jp/fsys/zunouhoudan/044zunou/app pr ocessor.html>>
OMAP'' OF TI - EMPLOYED BY NEC, MATSUSHITA, AND FUJITSU FOR 3G PORTABLE TELEPHONES [ONLINE, 18 March 2010 (2010-03-18), Retrieved from the Internet <URL:plusd.itmedia.co.jp/mobile/0203/18/n_omap.html>
See also references of EP2555112A4
ZUNO-HODAN, WILL HITACHI CHANGE PORTABLE TELEPHONES USING S-MAP? [ONLINE, no. 20, 18 March 2010 (2010-03-18), Retrieved from the Internet <URL:www.atmarkit.co.jp/fpc/rensai/zunouhoudan020/smap.h tml>>

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016528623A (ja) * 2013-07-31 2016-09-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ受信リンク内でコンピューティング要素を割り振るための方法、装置、およびコンピュータ・プログラム(データ受信リンク内でのコンピューティング要素割振り)

Also Published As

Publication number Publication date
EP2555112A1 (en) 2013-02-06
US9037888B2 (en) 2015-05-19
US20150220362A1 (en) 2015-08-06
CN102822803A (zh) 2012-12-12
JPWO2011121786A1 (ja) 2013-07-04
JP5472449B2 (ja) 2014-04-16
EP2555112A4 (en) 2014-08-13
US20130031391A1 (en) 2013-01-31

Similar Documents

Publication Publication Date Title
Fernando et al. Dynamic mobile cloud computing: Ad hoc and opportunistic job sharing
KR100700951B1 (ko) 이동통신 시스템에서 다중 작업 관리를 위한 장치 및 방법
US9697124B2 (en) Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
EP2530592B1 (en) Mobile terminal and task scheduling method therefor
JP5472449B2 (ja) マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
CN113037929A (zh) 一种信息接力输出方法、装置、电子设备及存储介质
CN105264473A (zh) 在压缩和全视图中的统一通信应用功能
CN102656539A (zh) 用于基于所推断的工作负载并行性控制中央处理单元功率的系统和方法
Chunlin et al. Cost and energy aware service provisioning for mobile client in cloud computing environment
KR20220061273A (ko) 다수의 디바이스 상에 컴퓨팅 환경의 제시
US20140002576A1 (en) Cross-Process Media Handling in a Voice-Over-Internet Protocol (VOIP) Application Platform
CN109299088A (zh) 海量数据存储方法、装置、存储介质及电子设备
CN110162393B (zh) 任务调度方法、装置及存储介质
US20170212581A1 (en) Systems and methods for providing power efficiency via memory latency control
GB2547744A (en) Facilitation of offline semantic processing in a resource-constrained device
US20110173471A1 (en) System and method of sampling data within a central processing unit
CN109726000A (zh) 多应用视图的管理方法、用于多应用视图的管理的装置及操作方法
CN115858175A (zh) 异步i/o请求优先级的调度方法、装置、介质及控制设备
CN103092703A (zh) Java资源访问的同步方法和装置
JP2014078286A (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
CN101258465A (zh) 控制多线程处理器内的多个程序线程的系统和方法
KR102230266B1 (ko) 복수의 전자 디바이스 사이에서 애플리케이션을 공유하는 방법 및 전자 디바이스
WO2021227642A1 (zh) 一种低功耗分布式调用方法、设备及装置
CN111459653B (zh) 集群调度方法、装置和系统以及电子设备
CN110209491B (zh) 一种资源管理方法、装置、服务器及存储介质

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201080065829.X

Country of ref document: CN

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

Ref document number: 10848962

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012508002

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2010848962

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE