WO2013140518A1 - スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法 - Google Patents

スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法 Download PDF

Info

Publication number
WO2013140518A1
WO2013140518A1 PCT/JP2012/057065 JP2012057065W WO2013140518A1 WO 2013140518 A1 WO2013140518 A1 WO 2013140518A1 JP 2012057065 W JP2012057065 W JP 2012057065W WO 2013140518 A1 WO2013140518 A1 WO 2013140518A1
Authority
WO
WIPO (PCT)
Prior art keywords
cpu
core
software
assigned
application
Prior art date
Application number
PCT/JP2012/057065
Other languages
English (en)
French (fr)
Inventor
康志 栗原
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2012/057065 priority Critical patent/WO2013140518A1/ja
Priority to JP2014505849A priority patent/JP5773065B2/ja
Publication of WO2013140518A1 publication Critical patent/WO2013140518A1/ja
Priority to US14/478,237 priority patent/US9715407B2/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/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
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking 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]
    • 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/486Scheduler internals
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

 アプリの起動処理が完了するまでにかかる時間の短縮化を図る。マルチコアプロセッサシステム(100)は、CPU(#0)~CPU(#3)と、共有メモリ(101)を有する。スケジューリングプログラムを実行するCPU(#0)は、CPU(#0)~CPU(#3)の中から、CPU(#1)を起動用CPUとして選択する。次に、CPU(#0)は、CPU(#1)に割り当てられているアプリ(4)を、CPU(#0)~CPU(#3)のうち、CPU(#1)以外のCPUに割り当てる。アプリの起動要求を受け付けた場合、CPU(#0)は、起動要求の対象となるアプリ(1)を、起動用CPUとして選択されたCPU(#1)に割り当てる。

Description

スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
 本発明は、スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法に関する。
 従来から、複数のCPU(Central Processing Unit)の各々のCPUに対して割り当てるアプリケーションソフトウェアを決定するスケジューリング技術が存在する。以下、アプリケーションソフトウェアを、「アプリ」と称する。
 関連する技術として、たとえば、CPUに割り当てられているアプリがスケジューリング技術にて決定された際に、CPUに割り当てられたアプリの処理要求に応じて、クロック周波数を変更するという技術が開示されている。また、リアルタイム制約のあるアプリとリアルタイム制約のないアプリを周期的に実行するシステムにおいて、リアルタイム制約のアプリを実行する際に、リアルタイム制約を満たせるようにクロック周波数を変更する技術が開示されている。また、アプリを実行した際に、CPUが達する温度を予測して、予測した温度が規定温度を超える場合には、アプリを他のCPUに割り当てる技術が開示されている(たとえば、下記特許文献1~3を参照。)。
特表2002-533801号公報 特開2002-99433号公報 特開2006-133995号公報
 しかしながら、上述した従来技術によれば、ソフトウェアの起動要求を受け付けた場合に、既に割り当てられている他のソフトウェアの処理により、起動要求を受け付けたソフトウェアの起動処理が遅延してしまう場合がある。たとえば、ソフトウェアの起動要求の受付時、他のソフトウェアの処理の実行中の場合、CPUは他のソフトウェアの処理の完了後、または他のソフトウェアの処理の停止後にソフトウェアの起動処理を開始することになり、ソフトウェアの起動処理が遅延する。また、ソフトウェアの起動処理と他のソフトウェアの処理を時分割にて切り替えて処理している場合、CPUは割当時間の満了後にソフトウェアの起動処理を停止して他のソフトウェアの処理を実行することになり、ソフトウェアの起動処理が遅延する場合がある。
 本発明は、上述した従来技術による問題点を解消するため、ソフトウェアの起動処理が完了するまでの時間を短縮化できるスケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法を提供することを目的とする。
 上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のコアの中からいずれかのコアを選択し、複数のコアの各コアに割り当てられているソフトウェアの識別情報をコアごとに記憶する記憶部を参照して、選択したコアに割り当てられているソフトウェアを、複数のコアのうち選択したコアとは異なる他のコアに割り当て、ソフトウェアの起動要求を受け付けた場合、選択したコアに割り当てられているソフトウェアを他のコアに割り当てた結果、選択したコアに起動要求の対象となるソフトウェアを割り当てるスケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法が提案される。
 本発明の一側面によれば、ソフトウェアの起動処理が完了するまでの時間の短縮化を図ることができるという効果を奏する。
図1は、本実施の形態におけるマルチコアプロセッサシステムの動作例を示す説明図である。 図2は、マルチコアプロセッサシステムのハードウェア構成例を示すブロック図である。 図3は、マルチコアプロセッサシステムの機能構成例を示す説明図である。 図4は、システム情報テーブルの記憶内容の一例を示す説明図である。 図5は、アプリ情報テーブルの記憶内容の一例を示す説明図である。 図6は、起動用CPUの選択方法の一例を示す説明図である。 図7は、スケジューリング処理の動作例を示す説明図(その1)である。 図8は、スケジューリング処理の動作例を示す説明図(その2)である。 図9は、スケジューリング処理の動作例を示す説明図(その3)である。 図10は、スケジューリング処理の動作例を示す説明図(その4)である。 図11は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その1)である。 図12は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その2)である。 図13は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その3)である。 図14は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その4)である。 図15は、起動用CPUの再設定に伴うクロック周波数の変更例を示す説明図(その1)である。 図16は、起動用CPUの再設定に伴うクロック周波数の変更例を示す説明図(その2)である。 図17は、スケジューリング処理手順の一例を示すフローチャートである。 図18は、アプリ起動時処理手順の一例を示すフローチャートである。 図19は、再スケジューリング処理手順の一例を示すフローチャートである。 図20は、クロック周波数変更処理手順の一例を示すフローチャートである。 図21は、本実施の形態にかかるスケジューリングプログラムの適用例を示す説明図である。
 以下に添付図面を参照して、開示のスケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法の実施の形態を詳細に説明する。なお、本実施の形態にかかるスケジューリングプログラムを実行する装置の例として、複数のプロセッサを有するマルチコアプロセッサシステムにて説明を行う。マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。また、プロセッサを、以下CPUとして説明する。
 図1は、本実施の形態におけるマルチコアプロセッサシステムの動作例を示す説明図である。マルチコアプロセッサシステム100は、CPU#0~CPU#3と、共有メモリ101を有する。また、CPU#0~CPU#3は、それぞれバス102により接続されている。
 また、図1の(A)では、CPU#0はアプリ0が割り当てられており、CPU#1はアプリ4が割り当てられており、CPU#2はアプリ2が割り当てられており、CPU#3はアプリ3とアプリ5が割り当てられている。
 このような状態において、スケジューリングプログラムを実行するCPU#0は、CPU#0~CPU#3の中から、たとえばCPU#1を起動用CPUとして選択する。選択されるCPUは、いずれのCPUであってもよい。次に、CPU#0は、各CPUに割り当てられているアプリの識別情報をCPUごとに記憶する共有メモリ101を参照して、CPU#1に割り当てられているアプリ4を、CPU#0~CPU#3のうち、CPU#1以外のCPUに割り当てる。図1の(A)の例では、CPU#0は、アプリ4をCPU#2に割り当てている。
 次に、図1の(B)では、図1の(A)にて示した状態の後、アプリの起動要求を受け付けた場合を示している。CPU#0は、起動要求の対象となるアプリ1を、起動用CPUとして選択されたCPU#1に割り当てる。CPU#1は、アプリ1以外に割り当てられているアプリが存在しないため、アプリ1の起動処理に特化できるため、アプリ1の起動処理を高速に行うことができる。
 このように、CPU#0は、CPU群の中からアプリ起動用となる起動用CPUを選択して、選択した起動用CPUに割り当てられているアプリを他のコアに移行する。これにより、マルチコアプロセッサシステム100は、アプリの起動要求時に起動用CPUがアプリの起動処理に特化できるため、アプリの起動処理が完了するまでの時間の短縮化を図ることができる。以下、図2~図21にて、本実施の形態にかかるマルチコアプロセッサシステム100についての説明を行う。
(マルチコアプロセッサシステム100のハードウェア)
 図2は、マルチコアプロセッサシステムのハードウェア構成例を示すブロック図である。図2において、携帯電話などの携帯端末を想定するマルチコアプロセッサシステム100は、CPUs201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、フラッシュROM204と、フラッシュROMコントローラ205と、フラッシュROM206を有する。マルチコアプロセッサシステム100は、さらに、ディスプレイ207と、IF208と、キーボード209と、クロックジェネレータ210と、熱センサ211を有する。なお、図1にて示した共有メモリ101は、RAM203、フラッシュROM204、フラッシュROM206といった記憶装置である。また、マルチコアプロセッサシステム100は、スマートフォン、PHS、といった形態電話に適用してもよいし、パーソナルコンピュータに適用してもよい。
 ここで、CPUs201は、マルチコアプロセッサシステム100の全体の制御を司る制御装置群である。CPUs201は、CPU#0~CPU#3を含む。さらに、CPUs201は、N個のCPUを含んでいてもよい。Nは、2以上の整数である。また、CPUs201の各CPUは、専用のキャッシュメモリを有してもよい。
 ROM202は、ブートプログラムなどのプログラムを記憶している不揮発性メモリである。RAM203は、CPUs201のワークエリアとして使用される揮発性メモリである。フラッシュROM204は、書き換え可能な不揮発性メモリであり、たとえば、読出し速度が高速なNOR型フラッシュメモリである。フラッシュROM204は、OS(Operating System)などのシステムソフトウェアやアプリなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、IF208によって新しいOSを受信し、フラッシュROM204に格納されている古いOSを、受信した新しいOSに更新する。
 フラッシュROMコントローラ205は、CPUs201の制御にしたがってフラッシュROM206に対するデータのリード/ライトを制御する制御装置である。フラッシュROM206は、書き換え可能な不揮発性メモリであり、たとえば、データの保存、運搬を主に目的とした、NAND型フラッシュメモリである。フラッシュROM206は、フラッシュROMコントローラ205の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがIF208を通して取得した画像データ、映像データなどや、また本実施の形態にかかるスケジューリングプログラムを記憶してもよい。フラッシュROM206は、たとえば、メモリカード、SDカードなどを採用することができる。
 ディスプレイ207は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ207は、たとえば、TFT液晶ディスプレイなどを採用することができる。
 IF208は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク212に接続され、ネットワーク212を介して他の装置に接続される。そして、IF208は、ネットワーク212と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。IF208には、たとえばモデムやLANアダプタなどを採用することができる。
 キーボード209は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード209は、タッチパネル式の入力パッドやテンキーなどであってもよい。
 クロックジェネレータ210は、CPUs201の各CPUにクロックを供給する回路である。また、クロックジェネレータ210が供給するクロック周波数の値は、CPUs201から制御可能とする。熱センサ211は、CPUs201の各CPUの温度を測定する。CPUの温度の測定方法は、たとえば、各CPUの内部にあるサーマルダイオードから値を取得してもよいし、各CPUのパッケージの外側にある温度計から値を取得してもよい。測定結果は、共有メモリ101に記憶される。
(マルチコアプロセッサシステム100の機能)
 次に、マルチコアプロセッサシステム100の機能について説明する。図3は、マルチコアプロセッサシステムの機能構成例を示す説明図である。マルチコアプロセッサシステム100は、記憶部301と、取得部302と、算出部303と、検出部304と、選択部305と、特定部306と、第1割当部307と、第2割当部308と、変更部309を含む。制御部となる取得部302~変更部309は、記憶装置に記憶されたプログラムをCPUs201のうち特定のCPUが実行することにより、取得部302~変更部309の各機能を実現する。図3では、CPU#0が実行する場合について説明する。また、記憶装置は、具体的には、たとえば、図2に示したROM202、RAM203、フラッシュROM204、フラッシュROM206などである。または、IF208を経由して他のCPUが実行することにより、取得部302~変更部309の各機能を実現してもよい。
 また、マルチコアプロセッサシステム100は、記憶部301に含まれるシステム情報テーブル311とアプリ情報テーブル312にアクセス可能である。システム情報テーブル311とアプリ情報テーブル312は、記憶部301内に含まれる。システム情報テーブル311は、複数のCPUの各CPUに割り当てられているアプリの識別情報をCPUごとに記憶する。システム情報テーブル311の詳細は、図4にて後述する。アプリ情報テーブル312は、各CPUに割り当てられているアプリの起動時刻を表す時刻情報を記憶する。アプリ情報テーブル312の詳細は、図5にて後述する。システム情報テーブル311とアプリ情報テーブル312は、RAM203、フラッシュROM204、フラッシュROM206といった記憶装置に格納されている。
 また、図3に示すマルチコアプロセッサシステム100は、CPU#0にアプリ1が割り当てられており、CPU#1にアプリ4が割り当てられており、CPU#2にアプリ2が割り当てられており、CPU#3に、アプリ3とアプリ5が割り当てられているとする。また、図3では、アプリ1がユーザの操作によって起動されるアプリであるとする。また、本実施の形態にかかるスケジューリングプログラムのスケジュール対象となるソフトウェアはアプリであるが、他のCPUに移行することが可能であれば、OSに含まれる基本ソフトウェアであってもよい。
 取得部302は、各CPUの温度の測定結果を取得する。CPUの温度とは、CPUの内部にあるサーマルダイオードによって測定された温度でもよいし、CPUのパッケージの外側の温度であってもよい。たとえば、取得部302は、熱センサ211による各CPUの温度の測定結果が格納された共有メモリ101から読み出して、各CPUの温度の測定結果を取得する。
 また、取得部302は、各CPUの使用率を取得してもよい。CPUの使用率とは、CPUに割り当てられているソフトウェアがCPUを占有している時間の割合である。具体的なCPUの使用率としては、CPUの単位時間あたりの実行時間の比率を使用率として算出しておく。取得部302の機能により、マルチコアプロセッサシステム100は、起動用CPUとして選択する際の基準を取得することができる。なお、取得結果は、CPU#0のレジスタまたはキャッシュメモリ、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
 算出部303は、システム情報テーブル311を参照して、各CPUに割り当てられているアプリの数をCPUごとに算出する。たとえば、算出部303は、CPU#0に割り当てられているアプリが1個、CPU#1に割り当てられているアプリが1個、CPU#2に割り当てられているアプリが1個、CPU#3割り当てられているアプリが2個、というように算出する。また、算出部303は、アプリに重みをつけて算出してもよい。たとえば、処理量が多い特定のアプリが、通常のアプリ2個分であるという情報を記憶部301に記憶しておき、算出部303は、前述の情報を参照して、アプリの数を算出する。算出部303の機能により、マルチコアプロセッサシステム100は、起動用CPUとして選択する際の基準を算出することができる。なお、算出結果は、CPU#0のレジスタまたはキャッシュメモリ、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
 検出部304は、起動要求の対象となるアプリの起動処理が完了したことを検出する。たとえば、検出部304は、起動要求の対象となるアプリ1の起動処理が完了したことを検出する。
 また、検出部304は、操作対象のアプリの実行が終了したことを検出してもよい。なお、操作対象のアプリとは、ユーザによる操作の対象となるアプリである。以下、操作対象のアプリをメインアプリと称する。たとえば、CPU#0は、メインアプリとなったアプリ0の実行が終了したことを検出する。検出部304の機能により、マルチコアプロセッサシステム100は、起動用CPUを選択する契機、またはメインアプリを特定する契機を検出することができる。なお、検出結果は、CPU#0のレジスタまたはキャッシュメモリ、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
 選択部305は、複数のCPUの中からいずれかのCPUを選択する。たとえば、選択部305は、CPU#0~CPU#3のうち、CPU#1を起動用CPUとして選択する。たとえば、選択部305は、初めにCPU#0を選択し、次の選択の機会では、CPU#1を選択するというように、固定の順序でCPUを選択してもよいし、CPU#0~CPU#3のうちランダムで選択してもよい。
 また、選択部305は、取得部302によって取得した各CPUの温度の測定結果に基づいて、複数のCPUの中からいずれかのCPUを選択してもよい。たとえば、選択部305は、取得した各CPUの温度のうち、最高温度となったCPUを、起動用CPUとして選択してもよい。また、選択部305は、各CPUの温度の測定結果の時間変化を算出し、温度の上昇度が最も高いCPUを、起動用CPUとして選択してもよい。または、マルチコアプロセッサシステム100の開発者が指定した許容温度以上となったCPUを、起動用CPUとして選択してもよい。許容温度以上となったCPUが複数存在する場合、選択部305は、たとえば、温度の上昇度が高いCPUを選択してもよいし、許容温度以上となり続けている時間が長いCPUを選択してもよい。
 また、選択部305は、取得部302によって取得した各コアの使用率に基づいて、複数のCPUの中からいずれかのCPUを選択してもよい。たとえば、選択部305は、使用率が最大となったCPUを、起動用CPUとして選択してもよい。また、選択部305は、使用率の時間変化を算出し、使用率の上昇度が最も高いCPUを、起動用CPUとして選択してもよい。
 また、選択部305は、算出部303によって算出されたCPUごとのアプリの数に基づいて、複数のCPUの中からいずれかのCPUを選択する。たとえば、選択部305は、算出されたアプリの数が最も大きい値となったCPUを、起動用CPUとして選択してもよい。また、選択部305は、アプリの数が最も多かったCPUでのアプリ数と、次に多いアプリの数と、が所定の閾値以下である場合に、取得部302によって取得する、温度や、使用率を用いて、起動用CPUを選択してもよい。
 また、選択部305は、検出部304によって起動処理が完了したことが検出された場合、複数のCPUの中からいずれかのCPUを選択してもよい。たとえば、選択部305は、検出部304がアプリ1の起動処理の完了を検出した場合、CPU#0~CPU#3のうちいずれかのCPUを起動用CPUとして選択する。選択部305の機能により、マルチコアプロセッサシステム100は、起動処理に特化するCPUを決定しておくことができる。なお、選択されたCPUの識別情報が、CPU#0のレジスタまたはキャッシュメモリ、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
 特定部306は、アプリ情報テーブル312を参照して、各CPUに割り当てられているアプリのうちメインアプリを特定する。アプリの起動時刻とは、起動要求を受け付けた時刻でもよいし、起動処理を開始した時刻でもよいし、起動処理が完了した時刻でもよい。たとえば、特定部306は、アプリの起動時刻が最も遅いアプリを、メインアプリとして特定する。または、アプリ情報テーブル312が前日以前のアプリの起動時刻を記憶しておき、特定部306は、現在時刻の過去方向において最も近い起動時刻となるアプリを、メインアプリとして特定してもよい。これにより、特定部306は、いつも同じ時刻に起動されるアプリをメインアプリとして特定できる。
 また、アプリ情報テーブル312にアプリが起動された回数を記憶しておき、特定部306は、起動された回数が最も多いアプリを、メインアプリに特定してもよい。または、特定部306は、フォアグラウンドに設定されているアプリをメインアプリとして特定してもよい。
 また、特定部306は、検出部304によってメインアプリの実行を終了したことが検出された場合、アプリ情報テーブル312を参照して、各CPUに割り当てられているアプリのうち新たなメインアプリを特定してもよい。たとえば、検出部304によってメインアプリに特定されていたアプリ0の実行を終了したことが検出された場合、特定部306は、アプリ情報テーブル312を参照して、アプリ1~アプリ5の中から、新たなメインアプリを特定する。特定部306の機能により、マルチコアプロセッサシステム100は、他のアプリを同時に割り当てたくないアプリを特定できる。なお、特定されたアプリの識別情報が、CPU#0のレジスタまたはキャッシュメモリ、RAM203、フラッシュROM204、フラッシュROM206などの記憶領域に記憶される。
 第1割当部307は、システム情報テーブル311を参照して、選択部305が選択したCPUに割り当てられているアプリを、複数のCPUのうち選択したCPUとは異なる他のCPUに割り当てる。たとえば、選択部305がCPU#1を選択したとする。このとき、第1割当部307は、システム情報テーブル311を参照して、CPU#1に割り当てられているアプリ4を特定する。続けて、第1割当部307は、アプリ4を、CPU#0~CPU#3のうち、CPU#1とは異なる他のCPUに割り当てる。図3の例では、第1割当部307は、アプリ4をCPU#2に割り当てる。
 また、第1割当部307は、システム情報テーブル311を参照して、特定部306が特定したメインアプリが割り当てられているCPUを特定する。続けて、第1割当部307は、特定したCPUに割り当てられているメインアプリ以外の他のアプリを、他のCPUのうちメインアプリが割り当てられているCPUとは異なるCPUに割り当ててもよい。ここで、他のCPUとは、複数のCPUのうち起動用CPU以外の他のCPUのことである。
 たとえば、特定部306によって特定されたメインアプリがアプリ1であり、アプリ1が割り当てられているCPUをCPU#0とする。また、図3に図示していないが、CPU#0に、アプリ6が割り当てられているとする。このとき、第1割当部307は、アプリ6を、アプリ1が割り当てられているCPU#0と、起動用CPUであるCPU#1以外のCPUとなるCPU#2またはCPU#3のいずれかに割り当てる。
 また、第1割当部307は、特定部306が新たなメインアプリを特定した場合、メインアプリが割り当てられていたCPUに、新たなメインアプリを割り当ててもよい。たとえば、CPU#0に割り当てられていたメインアプリであるアプリ0の実行が終了し、アプリ2が新たなメインアプリとして特定された場合、第1割当部307は、アプリ2を、CPU#0に割り当てる。
 また、第1割当部307は、特定部306が新たなメインアプリを特定した場合、新たなメインアプリが割り当てられているCPUを特定する。続けて、第1割当部307は、特定したCPUに割り当てられている新たなメインアプリ以外のアプリを、他のCPUのうち特定したCPUとは異なるCPUに割り当ててもよい。たとえば、CPU#0に割り当てられていたメインアプリであるアプリ0の実行が終了し、特定部306がアプリ2を新たなメインアプリとして特定したとする。このとき、第1割当部307は、アプリ2が割り当てられているCPU#2に割り当てられているアプリ2以外のアプリとなるアプリ4を、CPU#2と、起動用CPUであるCPU#1以外のCPUとなるCPU#0またはCPU#3のいずれかに割り当てる。
 第1割当部307の機能により、マルチコアプロセッサシステム100は、起動用CPUに割り当てられているアプリがなくなるため、起動用CPUを起動処理に特化させることができる。
 第2割当部308は、アプリの起動要求を受け付けた場合、選択部305が選択したCPUに割り当てられているアプリを、第1割当部307が他のCPUに割り当てた結果、選択したCPUに起動要求の対象となるアプリを割り当てる。なお、第1割当部が、選択したCPUに割り当てられているアプリを他のCPUに割り当てたことにより、選択したアプリには、割り当てられているアプリが存在しなくなる。たとえば、第2割当部308は、起動要求の対象となるアプリがアプリ1である場合、アプリ1を起動用CPUであるCPU#1に割り当てる。第2割当部308の機能により、起動処理に特化できるCPUにアプリを割り当てるため、起動処理が高速化し、ユーザに対する性能を向上できる。
 変更部309は、選択部305が選択したCPUに割り当てられているアプリを、第1割当部307が他のCPUに割り当てた場合、選択したCPUのクロック周波数の値を、前述の値より低い値に変更する。たとえば、第1割当部307が、起動用CPUとして選択されたCPU#1に割り当てられているアプリ4をCPU#2に割り当てたとする。このとき、変更部309は、CPU#1のクロック周波数の値を、現在の値より低い値に変更する。なお、変更後のクロック周波数の値は、CPU#1が設定可能な最低のクロック周波数でよい。
 また、変更部309は、選択したCPUに起動要求の対象となるアプリを割り当てた場合、選択したCPUのクロック周波数の値を、起動要求の対象となるアプリを起動可能なクロック周波数の値に変更する。なお、アプリを起動可能なクロック周波数は、全てのアプリにて同一のクロック周波数であってもよい。または、アプリごとに起動可能なクロック周波数の値をアプリ情報テーブル312に記憶しておき、変更部309がアプリ情報テーブル312を参照して、クロック周波数を変更してもよい。
 図4は、システム情報テーブルの記憶内容の一例を示す説明図である。システム情報テーブル311は、各CPUに対する情報を記憶している。図4に示すシステム情報テーブル311は、レコード401-1~レコード401-4を記憶する。
 システム情報テーブル311は、CPUID、クロック周波数、起動用CPUフラグ、割当アプリ、温度という5つのフィールドを含む。CPUIDフィールドには、CPUを識別する識別情報が格納される。クロック周波数フィールドには、対象のCPUに設定されているクロック周波数が格納される。起動用CPUフラグフィールドには、起動用CPUか否かを示す識別子が格納される。たとえば、起動用CPUフラグフィールドに識別子として“1”が格納されていた場合、対象のCPUが起動用CPUであることを示す。割当アプリフィールドには、対象のCPUに割り当てられているアプリの一覧が格納される。温度フィールドには、対象のCPUの温度が格納される。
 たとえば、レコード401-1は、CPUIDが#0となるCPU#0について、クロック周波数がfoverclockであり、起動用CPUでなく、割り当てられているアプリがアプリ0であり、温度がTlowである。なお、foverclockは、オーバークロックされたクロック周波数である。
 また、レコード401-2にて示すflowは、CPUの動作を最低限保証できるクロック周波数である。レコード401-3、レコード401-4にて示すfotherは、foverclockとflow以外のクロック周波数である。また、fotherとfoverclockとflowの関係については、図14にて後述する。またTlowと、Thighについては、ThighがTlowより温度が高いことを示す。したがって、図4では、CPU#0~CPU#3のうち、CPU#1の温度が最も高い。
 図5は、アプリ情報テーブルの記憶内容の一例を示す説明図である。アプリ情報テーブル312は、各アプリに対する情報を記憶している。図5に示すアプリ情報テーブル312は、レコード501-1~レコード501-4を記憶する。
 アプリ情報テーブル312は、アプリID、起動時刻、メインアプリフラグという3つのフィールドを含む。アプリIDフィールドには、アプリを識別する識別情報が格納される。起動時刻フィールドには、対象のアプリが起動した時刻が格納される。メインアプリフラグフィールドには、対象のアプリがメインアプリか否かを示す識別子が格納される。たとえば、メインアプリフラグフィールドに識別子として“1”が格納されていた場合、対象のアプリがメインアプリであることを示す。たとえば、レコード501-1は、アプリ0について、起動時刻が“mm/dd/hh:mm:ss”であり、メインアプリであることを示す。
 図6は、起動用CPUの選択方法の一例を示す説明図である。CPU#0は、熱センサ211によって測定された各CPUの温度の測定結果を取得する。たとえば、図6の例では、CPU#0は、CPU#0~CPU#3の各温度を取得する。取得した温度について、CPU#1の温度が高く、CPU#0とCPU#2とCPU#3の温度が低かったとする。
 このとき、CPU#0は、温度が最も高いCPU#1を起動用CPUとして選択する。続けて、CPU#0は、システム情報テーブル311について、CPU#1の情報を格納するレコード401-2の起動用CPUフラグフィールドに“1”を設定する。さらに、CPU#0は、レコード401-1、レコード401-3、レコード401-4の起動用CPUフラグフィールドに“0”を設定する。
 なお、起動用CPUの選択が行われるタイミングは、下記4つのタイミングである。1つ目のタイミングは、システム起動時である。2つ目のタイミングは、アプリが起動完了した時である。3つ目のタイミングは、CPU#0~CPU#3のいずれかのCPUにて、CPUの温度が予め指定していた許容温度に到達した時である。4つ目のタイミングは、メインアプリの実行が終了した時である。次に、図7~図10を用いて、スケジューリング処理の動作例について説明する。
 図7は、スケジューリング処理の動作例を示す説明図(その1)である。図7にて示すマルチコアプロセッサシステム100は、アプリ0がCPU#0に割り当てられており、アプリ2とアプリ4がCPU#2に割り当てられており、アプリ3とアプリ5がCPU#3に割り当てられている。
 このような状態にて、CPU#0は、ユーザからの操作により、アプリ1を起動する。CPU#0は、アプリ1を起動用CPUであるCPU#1に割り当てる。CPU#1は、アプリ1の起動処理を行う。アプリ1の起動完了後、CPU#0は、システム情報テーブル311を更新する。具体的には、CPU#0は、レコード401-2の割当アプリフィールドに、“アプリ1”を格納する。
 図8は、スケジューリング処理の動作例を示す説明図(その2)である。図8にて示すマルチコアプロセッサシステム100は、アプリ1が起動完了した状態である。このような状態にて、CPU#0は、新たな起動用CPUを選択する。図8に示す状態において、CPU#0は、温度が最も高いCPU#2を起動用CPUとして選択する。続けて、CPU#0は、システム情報テーブル311について、CPU#2の情報を格納するレコード401-3の起動用CPUフラグフィールドに“1”を設定する。さらに、CPU#0は、レコード401-1、レコード401-2、レコード401-4の起動用CPUフラグフィールドに“0”を設定する。
 次に、CPU#0は、メインアプリとなったアプリ1以外となる、アプリ0、アプリ2~アプリ5を再スケジューリング対象アプリに設定し、再スケジューリング対象アプリに対して再スケジューリング処理を実行する。
 なお、図8にて説明した状態は、図6にて示した、2つ目のタイミングであるアプリが起動完了した時である。もし、図8の状態が、1つ目のタイミングとなるシステム起動時であれば、CPU#0は、たとえば温度が最も高いCPUを起動用CPUとして選択して、図8にて示したシステム情報テーブル311の更新処理と再スケジューリング処理を実行する。また、図8の状態が、3つ目のタイミングとなるCPUの温度が許容温度に達した時であれば、CPU#0は、許容温度に達したCPUを起動用CPUとして選択して、システム情報テーブル311の更新処理と再スケジューリング処理を実行する。4つ目のタイミングについては、図10にて後述する。
 図9は、スケジューリング処理の動作例を示す説明図(その3)である。図9にて示すマルチコアプロセッサシステム100は、図8にて示した再スケジューリング対象アプリに対して再スケジューリング処理を実行した後の状態である。具体的に、CPU#0は、CPU#2に割り当てられていたアプリ2とアプリ4を、CPU#0に割り当てている。
 また、CPU#0は、システム情報テーブル311の割当アプリフィールドを更新する。具体的には、CPU#0は、レコード401-1の割当アプリフィールドに、“アプリ0”、“アプリ4”、“アプリ2”を格納する。また、CPU#0は、レコード401-3の割当アプリフィールドを、空白に設定する。なお、レコード401-2と、レコード401-4の割当アプリフィールドの記憶内容は、図8にて示した内容と同一である。
 図10は、スケジューリング処理の動作例を示す説明図(その4)である。図10にて示すマルチコアプロセッサシステム100は、図9にて示した状態から、メインアプリであるアプリ1の実行が終了した状態である。このとき、CPU#0は、各CPUに割り当てられているアプリから、新たなメインアプリを特定する。たとえば、CPU#0は、アプリ0、アプリ2~アプリ5のうち、最も起動時刻が遅いアプリ2をメインアプリに特定する。
 続けて、CPU#0は、メインアプリに特定されたアプリ2が割り当てられているCPUに、アプリ2以外のアプリが割り当てられていないように設定する。図10では、CPU#0は、アプリ2を、メインアプリであったアプリ1が割り当てられていたCPU#1に移行する。また、CPU#0は、システム情報テーブル311の割当アプリフィールドを更新する。具体的には、CPU#0は、レコード401-1の割当アプリフィールドに、“アプリ0”、“アプリ4”を格納する。また、CPU#0は、レコード401-2の割当アプリフィールドに、“アプリ2”を格納する。
 なお、図10では、CPU#0が、アプリ2をメインアプリであったアプリ1が割り当てられていたCPU#1に移行することにより、アプリ2が割り当てられているCPUに、アプリ2以外のアプリが割り当てられていないように設定している。別の割当方法として、CPU#0は、CPU#0に割り当てられているアプリ2以外のアプリ0とアプリ4を、CPU#0とCPU#2以外のCPUに割り当ててもよい。
 続けて、図11~図14において、起動用CPUの設定に伴うクロック周波数の変更例を示す。また、図15、図16において、起動用CPUの再設定に伴うクロック周波数の変更例を示す。
 図11は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その1)である。初めに、図11~図15に共通する説明として、マスタCPUとなるCPU#0は、マスタOS1101を実行する。また、CPU#1~CPU#3は、それぞれ、OS1102、OS1103、OS1104を実行する。また、マスタOS1101がアクセスする記憶領域として、CPU#0は、ウェイトキュー1111とランキュー1112にアクセス可能である。また、OS1102~OS1104のそれぞれが、アクセスする記憶領域として、CPU#1~CPU#3は、それぞれ、ランキュー1113、ランキュー1114、ランキュー1115にアクセス可能である。なお、ウェイトキュー1111~ランキュー1115は、たとえば、それぞれにアクセスするCPUのキャッシュメモリに存在してもよいし、共有メモリ101に存在してもよい。
 マスタOS1101は、マルチコアプロセッサシステム100全体の制御を司る。また、マスタOS1101は、CPU#0の制御を司る。具体的に、マスタOS1101は、ユーザからの起動指示の対象となるアプリを、CPU#0~CPU#3のいずれかに割り当てる。OS1102~OS1104は、各CPUの制御を司る。
 ウェイトキュー1111は、起動指示を受け付け、起動処理待ちのアプリの識別情報を記憶する記憶領域である。マスタOSの機能によりCPU#0は、ウェイトキュー1111にアプリが挿入された順番に、挿入されたアプリを各CPUに割り当てる。ランキュー1112~ランキュー1115は、各CPUにて割り当てられたアプリの識別情報を記憶する。各CPUは、CPUが実行するアプリをランキューから一つずつ取り出して、取り出したアプリを実行することにより、マルチタスク処理を実現する。また、図11で示すCPU#0~CPU#3は、クロックジェネレータ210の制御により、クロック周波数の値がfにて動作している。
 図12は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その2)である。図12に示すマルチコアプロセッサシステム100は、図11で示した状態から、起動用CPUを選択した状態である。CPU#0は、熱センサ211によって測定された各CPUの温度によって、CPU#0~CPU#3のうち、CPU#1を起動用CPUとして選択する。
 次に、CPU#0は、クロックジェネレータ210を制御して、CPU#1のクロック周波数を、fからflowに変更する。flowは、CPU#1が動作可能なクロック周波数のうち、最低のクロック周波数である。
 図13は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その3)である。図13に示すマルチコアプロセッサシステム100は、図12にて示した状態から、ユーザの操作によりアプリ1の起動要求を受け付けた状態に遷移した場合を示す。CPU#0は、アプリ1の識別情報をウェイトキュー1111に格納する。
 次に、CPU#0は、アプリ1を起動用CPUとして選択されたCPU#1に割り当てる。続いて、CPU#0は、クロックジェネレータ210を制御して、CPU#1のクロック周波数の値を、flowからfoverclockに変更する。foverclockは、通常設定されているクロック周波数よりも高いクロック周波数の値である。
 図14は、起動用CPUの設定に伴うクロック周波数の変更例を示す説明図(その4)である。図14に示すマルチコアプロセッサシステム100は、図13にて示した状態から、アプリ1の起動処理が完了した状態に遷移した場合を示す。CPU#0は、CPU#0~CPU#3のうち、温度が最も高いCPUであるCPU#2を新たな起動用CPUとして選択する。
 また、CPU#0は、クロックジェネレータ210を制御して、CPU#2のクロック周波数を、fからflowに変更する。また、CPU#0は、クロックジェネレータ210を制御して、CPU#0とCPU#3のクロック周波数の値を、fからfotherに変更する。
 なお、CPU#1のクロック周波数の値をfoverclockに変更することにより、マルチコアプロセッサシステム100の消費電力量が増大してしまう恐れがある。したがって、図14に示すマルチコアプロセッサシステム100は、CPU#0、CPU#2とCPU#3のクロック周波数を変更することにより、マルチコアプロセッサシステム100の消費電力量の増大を抑制している。CPUの消費電力量P(f)は、CPUの電源電圧をVddとし、Cを比例定数とすると、下記式を用いて表現できる。
 P(f)=C(Vdd2
 CPU#0は、下記(1)式が成り立つように、fotherを決定する。
 P(foverclock)+P(flow)+ΣnP(fother)=NP(f) …(1)
 (1)式にて、nは、CPUの個数Nから、クロック周波数の値が、foverclockまたはflowに変更されたCPUの個数を引いた数となる。
 (1)式が成り立つfotherを設定することにより、マルチコアプロセッサシステム100は、消費電力量の増大を抑制しつつ、ユーザに対する性能を向上できる。
 図15は、起動用CPUの再設定に伴うクロック周波数の変更例を示す説明図(その1)である。図15に示すマルチコアプロセッサシステム100は、CPU#0にアプリ0が割り当てられており、CPU#1にアプリ1が割り当てられており、CPU#2にアプリ2が割り当てられており、CPU#3にアプリ3が割り当てられている。
 このような状態において、CPU#0は、たとえば、メインアプリをアプリ0に特定する。次に、CPU#0は、たとえば、CPU#0~CPU#3のうちCPU#1を起動用CPUとして選択する。続けて、CPU#0は、クロックジェネレータ210を制御して、CPU#0のクロック周波数を、flowからfoverclockに変更する。また、CPU#0は、クロックジェネレータ210を制御して、CPU#1のクロック周波数を、fotherからflowに変更する。
 次に、CPU#0は、起動用CPUとして選択されたCPU#1に割り当てられているアプリ1を、CPU#2またはCPU#3のいずれかに割り当てる。図15の例では、CPU#0は、アプリ1をCPU#2に割り当てる。割り当てられたアプリ1の識別情報が、ランキュー1114に格納される。
 図16は、起動用CPUの再設定に伴うクロック周波数の変更例を示す説明図(その2)である。図16に示すマルチコアプロセッサシステム100は、図15に示した状態から、新たなアプリの起動要求を受け付けた状態に遷移した場合を示す。図16にて、CPU#0は、新たにアプリ5の起動要求を受け付けている。受け付けたアプリ5の識別情報が、ウェイトキュー1111に格納されている。
 CPU#0は、アプリ5を起動用CPUであるCPU#1に割り当てる。続けて、CPU#0は、クロックジェネレータ210を制御して、CPU#1のクロック周波数を、flowからfoverclockに変更する。また、CPU#0は、アプリ5の起動完了後、アプリ5をメインアプリに設定する。この時点で、アプリ0がメインアプリでなくなったため、CPU#0は、CPU#0のクロック周波数を、foverclockからfotherに変更する。
 続けて、図7~図16にて説明した動作を行うスケジューリング処理のフローチャートを、図17~図20を用いて説明する。スケジューリング処理を実行するCPUは、CPU#0~CPU#3のうちいずれのCPUであってもよい。本実施の形態では、CPU#0がスケジューリング処理を実行する場合を例にして説明する。
 図17は、スケジューリング処理手順の一例を示すフローチャートである。スケジューリング処理は、アプリを割り当てるCPUを決定する処理である。初めに、CPU#0は、熱センサ211の測定結果を用いて、温度が最も高いCPUを特定する(ステップS1701)。次に、CPU#0は、CPU#0~CPU#3のうち、特定したCPUを起動用CPUとして選択する(ステップS1702)。続いて、CPU#0は、クロックジェネレータ210により、各CPUのクロック周波数をflowに変更する(ステップS1703)。
 次に、CPU#0は、何らかのイベントを検出したか否かを判断する(ステップS1704)。アプリ起動要求イベントを検出した場合(ステップS1704:アプリ起動要求イベント)、CPU#0は、アプリ起動時処理を実行する(ステップS1705)。アプリ起動時処理の詳細は、図18にて後述する。ステップS1705の実行終了後、CPU#0は、ステップS1704の処理に移行する。
 CPU許容温度到達イベントを検出した場合(ステップS1704:CPU許容温度到達イベント)、CPU#0は、許容温度に到達したCPUを起動用CPUとして選択する(ステップS1706)。なお、CPU許容温度到達イベントとは、CPU#0~CPU#3のうち、許容温度に到達したCPUを検出したというイベントである。具体的な検出方法としては、CPU#0は、熱センサ211による測定結果を定期的に読み出して、許容温度以上となったCPUがあれば、スケジューリングプログラムに通知する。
 続けて、CPU#0は、再スケジューリング処理を実行する(ステップS1707)。再スケジューリング処理の詳細は、図19にて後述する。次に、CPU#0は、クロック周波数変更処理を実行する(ステップS1708)。クロック周波数変更処理の詳細は、図20にて後述する。ステップS1708の処理終了後、CPU#0は、ステップS1704の処理に移行する。
 メインアプリ実行終了イベントを検出した場合(ステップS1704:メインアプリ実行終了イベント)、CPU#0は、アプリ情報テーブル312を参照して、起動時刻が最も遅いアプリをメインアプリに特定する(ステップS1709)。続けて、CPU#0は、再スケジューリング処理を実行する(ステップS1710)。ステップS1710の処理終了後、CPU#0は、ステップS1704の処理に移行する。なお、ステップS1710の終了後、CPU#0は、クロック周波数の変更を行ってもよい。具体的には、メインアプリが割り当てられたCPUのクロック周波数をfoverclockに変更する。続けて、メインアプリが割り当てられているCPUと起動用CPU以外のCPUのクロック周波数を、fotherに変更する。
 スケジューリング処理終了イベントを検出した場合(ステップS1704:スケジューリング処理終了イベント)、CPU#0は、スケジューリング処理を終了する。また、イベント発生していない場合(ステップS1704:No)、一定時間経過後、CPU#0は、ステップS1704の処理に移行する。スケジューリング処理の機能により、マルチコアプロセッサシステム100は、起動用CPUまたはメインアプリが変更するイベントを検出して、それぞれのユーザに対する性能を向上させるための処理を実行できる。
 図18は、アプリ起動時処理手順の一例を示すフローチャートである。アプリ起動時処理は、アプリ起動イベントを検出した時に実行される処理である。なお、図18の処理にて起動するアプリは、アプリ起動イベント内の引数にて指定されている起動要求の対象となるアプリである。
 CPU#0は、起動用CPUに、起動要求の対象となるアプリを割り当てる(ステップS1801)。次に、CPU#0は、起動用CPUのクロック周波数を、foverclockに変更する(ステップS1802)。続けて、CPU#0は、起動要求の対象となるアプリの起動処理を実行する(ステップS1803)。次に、CPU#0は、起動処理が完了したことを検出する(ステップS1804)。起動処理が完了しない間、CPU#0は、起動処理が完了することを待ち続ける。
 起動処理の実行後、CPU#0は、起動処理が完了したアプリをメインアプリに特定する(ステップS1805)。次に、CPU#0は、熱センサ211の測定結果を用いて、温度が最も高いCPUを特定する(ステップS1806)。続けて、CPU#0は、特定したCPUを起動用CPUとして選択する(ステップS1807)。なお、ステップS1807の処理にて選択されるCPUは、ステップS1802における起動用CPUとは異なるCPUになり易い。異なるCPUとなる理由として、ステップS1802における起動用CPUは、アプリを実行しておらず、クロック周波数もflowに変更されていたため、温度が低くなっているためである。
 次に、CPU#0は、再スケジューリング処理を実行する(ステップS1808)。続けて、CPU#0は、クロック周波数変更処理を実行する(ステップS1809)。ステップS1809の処理実行後、CPU#0は、アプリ起動時処理を終了する。アプリ起動時処理により、マルチコアプロセッサシステム100は、アプリ起動要求イベントに伴う起動用CPUの選択とメインアプリの特定を行うことができる。
 図19は、再スケジューリング処理手順の一例を示すフローチャートである。再スケジューリング処理は、起動用CPUが選択された場合、またはメインアプリが特定された場合に、アプリの割当を変更する処理である。
 CPU#0は、メインアプリ以外のアプリ群のスケジューリングをCPU数が3個以上か否かに応じて決定する(ステップS1901)。CPU数が3個以上である場合(ステップS1901:Yes)、CPU#0は、メインアプリが割り当てられているCPUと起動用CPU以外のCPU群に、負荷分散スケジューリングする(ステップS1902)。負荷分散スケジューリングとは、各CPUの負荷量が均等になるようにアプリを割り当てる処理である。CPU数が3個未満である場合(ステップS1901:No)、CPU#0は、起動用CPUではないCPUにアプリ群を割り当てる(ステップS1903)。
 ステップS1902、またはステップS1903の処理終了後、CPU#0は、システム情報テーブル311の割当済アプリフィールドを、アプリの割当結果に基づいて更新する(ステップS1904)。ステップS1904の処理終了後、CPU#0は、再スケジューリング処理を終了する。再スケジューリング処理により、マルチコアプロセッサシステム100は、起動用CPUを起動処理に特化させることができ、また、メインアプリが割り当てられているCPUを、メインアプリの実行に特化することができる。
 図20は、クロック周波数変更処理手順の一例を示すフローチャートである。クロック周波数変更処理は、起動用CPUが選択された場合に、各CPUのクロック周波数を変更する処理である。
 CPU#0は、起動用CPUのクロック周波数を、flowに変更する(ステップS2001)。次に、CPU#0は、メインアプリが割り当てられているCPUと起動用CPU以外のCPUのクロック周波数を、fotherに変更する(ステップS2002)。続いて、CPU#0は、システム情報テーブル311のクロック周波数フィールドを更新する(ステップS2003)。クロック周波数変更処理により、マルチコアプロセッサシステム100は、温度が高くなっていたCPUのクロック周波数を低下させることになるため、CPUの温度を下げることができる。
 図21は、本実施の形態にかかるスケジューリングプログラムの適用例を示す説明図である。本実施の形態として、携帯電話などの携帯端末を想定している。図21において、携帯電話システム2100の各部の動作は図2と同様である。具体的に、形態電話システム2100は、CPUs2101、ROM2102、RAM2103、フラッシュROM2104、フラッシュROMコントローラ2105、フラッシュROM2106を有する。さらに、形態電話システム2100は、ディスプレイ2107、IF2108、キーボード2109、クロックジェネレータ2110、熱センサ2111を有する。各部は、バス2112にて相互に接続されている。
 携帯電話システム2100上で、たとえば、音楽を聴きながらインターネットブラウジングを行っている状況を想定する。このとき、CPU#1とCPU#2において音楽再生処理2121とブラウザ処理2122がそれぞれ実行されている。
 本実施の携帯で説明したマルチコアプロセッサシステム100として、携帯電話システム2100は、スケジューリングプログラムを実行する。たとえば、CPU#0が起動用CPUに設定されていたとする。このとき、携帯電話システム2100が携帯システム2100を使用しているユーザの指示によりゲームアプリを起動した場合、ゲーム処理2123がCPU#0に割り当てられる。このとき、CPU#0は、オーバークロックされ、かつ、起動要求の対象となるゲーム処理2123の処理に特化できるため、携帯電話システム2100はユーザに対する性能を向上できる。
 以上説明したように、マルチコアプロセッサシステム100は、CPU群の中からアプリ起動用となる起動用CPUを選択し、起動用CPUに割り当てられているアプリを他のCPUに移行する。これにより、アプリの起動要求時、起動用CPUがアプリの起動処理に特化できるため、マルチコアプロセッサシステム100は、アプリの起動処理が完了するまでの時間を短縮化できる。アプリの起動処理が完了するまでの時間が短縮化することにより、たとえば、起動要求を行ったユーザの待ち時間が短縮されるため、ユーザに対する性能を向上できる。
 また、マルチコアプロセッサシステム100は、各CPUの温度に基づいて起動用CPUを選択してもよい。CPUの負荷量が多く温度が上昇したCPUを起動用CPUとして選択することにより、割り当てられているアプリが他のCPUに移行し、起動用CPUの負荷量が低減するため、マルチコアプロセッサシステム100は、CPUの温度を低下させることができる。
 また、マルチコアプロセッサシステム100は、各CPUの使用率に基づいて起動用CPUを選択してもよい。CPUの使用率が高いと、CPUの温度も上昇している可能性が高い。たとえば、CPUの使用率が高いCPUを起動用CPUとして選択することにより、割り当てられているアプリが他のCPUに移行し、起動用CPUの負荷量が低減する。したがって、マルチコアプロセッサシステム100は、温度が上昇しているCPUの温度を低下させることができる。
 また、マルチコアプロセッサシステム100は、各CPUに割り当てられているアプリの数に基づいて、起動用CPUを選択してもよい。CPUに割り当てられているアプリの数が多いと、CPUの負荷量が増大して、CPUの温度も上昇している可能性が高い。たとえば、割り当てられているアプリの数が多いCPUを起動用CPUとして選択することにより、割り当てられているアプリが他のCPUに移行し、起動用CPUの負荷量が低減する。したがって、マルチコアプロセッサシステム100は、温度が上昇しているCPUの温度を低下させることができる。
 また、マルチコアプロセッサシステム100は、起動用CPUとして選択されたCPUに割り当てられていたアプリを他のCPUに割り当てた場合、起動用CPUのクロック周波数を、現在の値より低下させてもよい。アプリを他のCPUに割り当てたことにより、起動用CPUの負荷量が減少し、低いクロック周波数でも起動用CPUが動作できる。また、起動用CPUのクロック周波数が低下したことにより、起動用CPUの温度を低下させることができる。CPUの温度が低下することにより、マルチコアプロセッサシステム100は、熱暴走を防ぐことができる。また、マルチコアプロセッサシステム100は、熱によるパッケージの破損を防止できる。
 また、マルチコアプロセッサシステム100は、起動要求となるアプリを割り当てた場合、起動用CPUを、起動要求の対象となるアプリを起動可能なクロック周波数の値に変更してもよい。これにより、マルチコアプロセッサシステム100は、クロック周波数の値が低く変更されており、アプリを起動できない状態から、起動処理を実行できる状態に変更できる。
 また、マルチコアプロセッサシステム100は、起動要求の対象となるアプリの起動処理が完了した場合、新たな起動用CPUを選択してもよい。アプリの起動処理が完了すると、起動用CPUにアプリが割り当てられた状態となるため、マルチコアプロセッサシステム100は、新たな起動用CPUを選択しておくことにより、新たな起動要求に対して、ユーザに対する性能が向上できるように準備できる。
 また、マルチコアプロセッサシステム100は、アプリの起動時刻に基づいて、メインアプリを特定する。続けて、マルチコアプロセッサシステム100は、メインアプリを割り当てているCPUに割り当てられているメインアプリ以外のアプリを、メインアプリを割り当てているCPUと起動用CPU以外のCPUに割り当ててもよい。本実施の形態では、起動用CPUにアプリを割り当てないようにしたため、他のCPUの負荷量が増大し、ユーザが操作するメインアプリが割り当てられているCPUも負荷量が増大するため、メインアプリの割当時間が短くなり、ユーザに対する性能が低下する。したがって、ユーザが操作するメインアプリが割り当てられているCPUには、メインアプリ以外のアプリを割り当てないことにより、メインアプリの処理に特化できるため、マルチコアプロセッサシステム100は、ユーザに対する性能の低下を抑制できる。
 また、マルチコアプロセッサシステム100は、メインアプリの実行が終了したことを検出した場合、新たなメインアプリを特定し、終了したメインアプリが割り当てられていたCPUに、新たなメインアプリを割り当ててもよい。これにより、新たなメインアプリが割り当てられているCPUには、メインアプリ以外のアプリを割り当てないことになり、新たなメインアプリの処理に特化できるため、マルチコアプロセッサシステム100は、ユーザに対する性能の低下を抑制できる。また、前述の方法は、新たなメインアプリ1つを移行するだけで済む。また、終了したメインアプリを高速に動作させるため、メインアプリが割り当てられていたCPUがオーバークロックしていた場合、マルチコアプロセッサシステム100は、クロック周波数を変更せずに新たなメインアプリも高速に動作させることができる。
 また、マルチコアプロセッサシステム100は、メインアプリの実行が終了したことを検出した場合、新たなメインアプリを特定し、新たなメインアプリを割り当てているCPUに割り当てられている他のアプリを、起動用CPU以外に割り当ててもよい。これにより、新たなメインアプリが割り当てられているCPUには、メインアプリ以外のアプリを割り当てないことになり、新たなメインアプリの処理に特化できるため、マルチコアプロセッサシステム100は、ユーザに対する性能の低下を抑制できる。前述の方法は、新たなメインアプリの再割当をせずに済む。
 なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。
 #0~#3 CPU
 0~5 アプリ
 100 マルチコアプロセッサシステム
 101 共有メモリ
 301 記憶部
 302 取得部
 303 算出部
 304 検出部
 305 選択部
 306 特定部
 307 第1割当部
 308 第2割当部
 309 変更部
 311 システム情報テーブル
 312 アプリ情報テーブル

Claims (12)

  1.  複数のコアのうち特定のコアに、
     前記複数のコアの中からいずれかのコアを選択し、
     前記複数のコアの各コアに割り当てられているソフトウェアの識別情報をコアごとに記憶する記憶部を参照して、前記選択したコアに割り当てられているソフトウェアを、前記複数のコアのうち前記選択したコアとは異なる他のコアに割り当て、
     ソフトウェアの起動要求を受け付けた場合、前記選択したコアに割り当てられているソフトウェアを前記他のコアに割り当てた結果、前記選択したコアに前記起動要求の対象となるソフトウェアを割り当てる、
     処理を実行させることを特徴とするスケジューリングプログラム。
  2.  前記特定のコアに、
     前記各コアの温度の測定結果を取得する処理を実行させ、
     前記選択する処理は、
     前記取得した各コアの温度の測定結果に基づいて、前記複数のコアの中からいずれかのコアを選択することを特徴とする請求項1に記載のスケジューリングプログラム。
  3.  前記特定のコアに、
     前記各コアの使用率を取得する処理を実行させ、
     前記選択する処理は、
     前記取得した各コアの使用率に基づいて、前記複数のコアの中からいずれかのコアを選択することを特徴とする請求項1に記載のスケジューリングプログラム。
  4.  前記特定のコアに、
     前記記憶部を参照して、前記各コアに割り当てられているソフトウェアの数を前記コアごとに算出する処理を実行させ、
     前記選択する処理は、
     前記算出したコアごとのソフトウェアの数に基づいて、前記複数のコアの中からいずれかのコアを選択することを特徴とする請求項1に記載のスケジューリングプログラム。
  5.  前記特定のコアに、
     前記選択したコアに割り当てられているソフトウェアを前記他のコアに割り当てた場合、前記選択したコアのクロック周波数の値を当該値より低い値に変更する処理を実行させることを特徴とする請求項1~4のいずれか一つに記載のスケジューリングプログラム。
  6.  前記特定のコアに、
     前記選択したコアに前記起動要求の対象となるソフトウェアを割り当てた場合、前記選択したコアのクロック周波数の値を、前記起動要求の対象となるソフトウェアを起動可能なクロック周波数の値に変更する処理を実行させることを特徴とする請求項1~5のいずれか一つに記載のスケジューリングプログラム。
  7.  前記特定のコアに、
     前記起動要求の対象となるソフトウェアの起動処理が完了したことを検出し、
     前記起動処理が完了したことを検出した場合、前記複数のコアの中からいずれかのコアを選択し、
     前記記憶部を参照して、前記選択したコアに割り当てられているソフトウェアを、前記複数のコアのうち前記選択したコアとは異なるコアに割り当て、
     ソフトウェアの起動要求を受け付けた場合、前記選択したコアに割り当てられているソフトウェアを前記複数のコアのうち前記選択したコアとは異なるコアに割り当てた結果、前記選択したコアに前記起動要求の対象となるソフトウェアを割り当てる処理を実行させることを特徴とする請求項1~6のいずれか一つに記載のスケジューリングプログラム。
  8.  前記記憶部は、前記各コアに割り当てられているソフトウェアの起動時刻を表す時刻情報を記憶しており、
     前記特定のコアに、
     前記記憶部に記憶されている前記各コアに割り当てられているソフトウェアの起動時刻を表す時刻情報を参照して、前記各コアに割り当てられているソフトウェアのうち操作対象のソフトウェアを特定し、
     前記記憶部に記憶されている前記コアごとのソフトウェアの識別情報を参照して、前記特定した操作対象のソフトウェアが割り当てられているコアに割り当てられている前記操作対象のソフトウェア以外の他のソフトウェアを、前記他のコアのうち前記操作対象のソフトウェアが割り当てられているコアとは異なるコアに割り当てる処理を実行させることを特徴とする請求項1~7のいずれか一つに記載のスケジューリングプログラム。
  9.  前記特定のコアに、
     前記操作対象のソフトウェアの実行が終了したことを検出し、
     前記操作対象のソフトウェアの実行が終了したことを検出した場合、前記記憶部に記憶されている前記各コアに割り当てられているソフトウェアの起動時刻を表す時刻情報を参照して、前記各コアに割り当てられているソフトウェアのうち新たな操作対象のソフトウェアを特定し、
     前記新たな操作対象のソフトウェアを特定した場合、前記操作対象のソフトウェアが割り当てられていたコアに、前記新たな操作対象のソフトウェアを割り当てる処理を実行させることを特徴とする請求項8に記載のスケジューリングプログラム。
  10.  前記特定のコアに、
     前記操作対象のソフトウェアの実行が終了したことを検出し、
     前記操作対象のソフトウェアの実行が終了したことを検出した場合、前記記憶部に記憶されている時刻情報を参照して、前記各コアに割り当てられているソフトウェアのうち新たな操作対象のソフトウェアを特定し、
     前記新たな操作対象のソフトウェアを特定した場合、前記新たな操作対象のソフトウェアが割り当てられているコアに割り当てられている前記新たな操作対象のソフトウェア以外のソフトウェアを、前記他のコアのうち前記新たな操作対象のソフトウェアが割り当てられているコアとは異なるコアに割り当てる処理を実行させることを特徴とする請求項8に記載のスケジューリングプログラム。
  11.  複数のコアの中からいずれかのコアを選択する選択部と、
     前記複数のコアの各コアに割り当てられているソフトウェアの識別情報をコアごとに記憶する記憶部を参照して、前記選択部が選択したコアに割り当てられているソフトウェアを、前記複数のコアのうち前記選択したコアとは異なる他のコアに割り当てる第1の割当部と、
     ソフトウェアの起動要求を受け付けた場合、前記選択したコアに割り当てられているソフトウェアを前記第1の割当部が前記他のコアに割り当てた結果、前記選択したコアに前記起動要求の対象となるソフトウェアを割り当てる第2の割当部と、
     を有することを特徴とするマルチコアプロセッサシステム。
  12.  複数のコアのうち特定のコアが、
     前記複数のコアの中からいずれかのコアを選択し、
     前記複数のコアの各コアに割り当てられているソフトウェアの識別情報をコアごとに記憶する記憶部を参照して、前記選択したコアに割り当てられているソフトウェアを、前記複数のコアのうち前記選択したコアとは異なる他のコアに割り当て、
     ソフトウェアの起動要求を受け付けた場合、前記選択したコアに割り当てられているソフトウェアを前記他のコアに割り当てた結果、前記選択したコアに前記起動要求の対象となるソフトウェアを割り当てる、
     処理を実行することを特徴とするスケジューリング方法。
PCT/JP2012/057065 2012-03-19 2012-03-19 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法 WO2013140518A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2012/057065 WO2013140518A1 (ja) 2012-03-19 2012-03-19 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
JP2014505849A JP5773065B2 (ja) 2012-03-19 2012-03-19 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
US14/478,237 US9715407B2 (en) 2012-03-19 2014-09-05 Computer product, multicore processor system, and scheduling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/057065 WO2013140518A1 (ja) 2012-03-19 2012-03-19 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/478,237 Continuation US9715407B2 (en) 2012-03-19 2014-09-05 Computer product, multicore processor system, and scheduling method

Publications (1)

Publication Number Publication Date
WO2013140518A1 true WO2013140518A1 (ja) 2013-09-26

Family

ID=49222012

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/057065 WO2013140518A1 (ja) 2012-03-19 2012-03-19 スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法

Country Status (3)

Country Link
US (1) US9715407B2 (ja)
JP (1) JP5773065B2 (ja)
WO (1) WO2013140518A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020042504A (ja) * 2018-09-10 2020-03-19 日本電気株式会社 設定装置、処理装置及び設定方法
WO2020235088A1 (ja) * 2019-05-23 2020-11-26 三菱電機株式会社 制御装置および分散処理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015127899A (ja) * 2013-12-27 2015-07-09 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理システム
JP2015127900A (ja) 2013-12-27 2015-07-09 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、サーバシステムおよび情報処理システム
JP2015127898A (ja) 2013-12-27 2015-07-09 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理システム
US10275007B2 (en) * 2014-09-26 2019-04-30 Intel Corporation Performance management for a multiple-CPU platform
CN106095489B (zh) * 2016-05-31 2017-11-07 广东欧珀移动通信有限公司 一种应用控制方法及移动终端
JP6904064B2 (ja) * 2017-05-29 2021-07-14 富士通株式会社 タスク配備プログラム、タスク配備方法、およびタスク配備装置
CN109960539A (zh) * 2017-12-21 2019-07-02 广东欧珀移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
CN113434087B (zh) * 2021-06-28 2022-09-23 山东航天电子技术研究所 基于共享空间的多核启动方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006133995A (ja) * 2004-11-04 2006-05-25 Toshiba Corp プロセッサシステム及びその制御方法
JP2007328461A (ja) * 2006-06-06 2007-12-20 Matsushita Electric Ind Co Ltd 非対称マルチプロセッサ
JP2008225641A (ja) * 2007-03-09 2008-09-25 Nec Corp コンピュータシステム、割り込み制御方法及びプログラム
JP2010128895A (ja) * 2008-11-28 2010-06-10 Internatl Business Mach Corp <Ibm> スレッド実行制御方法、およびシステム
JP2010277171A (ja) * 2009-05-26 2010-12-09 Hitachi Ltd タスク割当装置、および、タスク割当方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298448B1 (en) 1998-12-21 2001-10-02 Siemens Information And Communication Networks, Inc. Apparatus and method for automatic CPU speed control based on application-specific criteria
JP2002099433A (ja) 2000-09-22 2002-04-05 Sony Corp 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US7254812B1 (en) * 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
US7617403B2 (en) * 2006-07-26 2009-11-10 International Business Machines Corporation Method and apparatus for controlling heat generation in a multi-core processor
WO2008114443A1 (ja) * 2007-03-20 2008-09-25 Fujitsu Limited マルチプロセッサシステム及びその制御方法
US8276142B2 (en) * 2009-10-09 2012-09-25 Intel Corporation Hardware support for thread scheduling on multi-core processors
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US8688883B2 (en) * 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006133995A (ja) * 2004-11-04 2006-05-25 Toshiba Corp プロセッサシステム及びその制御方法
JP2007328461A (ja) * 2006-06-06 2007-12-20 Matsushita Electric Ind Co Ltd 非対称マルチプロセッサ
JP2008225641A (ja) * 2007-03-09 2008-09-25 Nec Corp コンピュータシステム、割り込み制御方法及びプログラム
JP2010128895A (ja) * 2008-11-28 2010-06-10 Internatl Business Mach Corp <Ibm> スレッド実行制御方法、およびシステム
JP2010277171A (ja) * 2009-05-26 2010-12-09 Hitachi Ltd タスク割当装置、および、タスク割当方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020042504A (ja) * 2018-09-10 2020-03-19 日本電気株式会社 設定装置、処理装置及び設定方法
JP7259236B2 (ja) 2018-09-10 2023-04-18 日本電気株式会社 設定装置、処理装置及び設定方法
WO2020235088A1 (ja) * 2019-05-23 2020-11-26 三菱電機株式会社 制御装置および分散処理方法
JP6808090B1 (ja) * 2019-05-23 2021-01-06 三菱電機株式会社 制御装置および分散処理方法
US11340954B2 (en) 2019-05-23 2022-05-24 Mitsubishi Electric Corporation Control device and distributed processing method

Also Published As

Publication number Publication date
US9715407B2 (en) 2017-07-25
JP5773065B2 (ja) 2015-09-02
JPWO2013140518A1 (ja) 2015-08-03
US20140380326A1 (en) 2014-12-25

Similar Documents

Publication Publication Date Title
JP5773065B2 (ja) スケジューリングプログラム、マルチコアプロセッサシステム、およびスケジューリング方法
US8453150B2 (en) Multithread application-aware memory scheduling scheme for multi-core processors
US8656405B2 (en) Pulling heavy tasks and pushing light tasks across multiple processor units of differing capacity
JP5673672B2 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
US9229765B2 (en) Guarantee real time processing of soft real-time operating system by instructing core to enter a waiting period prior to transferring a high priority task
US9563465B2 (en) Multi-task scheduling method for assigning threads based on time slices to multi-core processors and multi-core processor system therefor
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
US9678792B2 (en) Shared resources in a docked mobile environment
US20150194198A1 (en) Multi-core processor system, memory controller control method, and computer product
JP5708450B2 (ja) マルチコアプロセッサシステム、レジスタ利用方法、およびレジスタ利用プログラム
JP5725040B2 (ja) マルチコアプロセッサシステム、およびスケジューリング方法
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
US9588817B2 (en) Scheduling method and scheduling system for assigning application to processor
US9690619B2 (en) Thread processing method and thread processing system for setting for each thread priority level of access right to access shared memory
TWI760756B (zh) 共用代碼之系統與代碼共用方法
JP5429395B2 (ja) 情報処理装置、情報処理プログラム、および情報処理方法
Tabish et al. An analyzable inter-core communication framework for high-performance multicore embedded systems
JPWO2012101759A1 (ja) プロセッサ処理方法、およびプロセッサシステム
US20130191839A1 (en) Information processing apparatus, control method therefor, and computer-readable storage medium
JP6617511B2 (ja) 並列化方法、並列化ツール、車載装置
JP6375602B2 (ja) 消費電力を制御する情報処理装置、電力制御方法、及びそのためのプログラム
US11822967B2 (en) Task distribution method for minimizing preemption between tasks and apparatus for performing the same
JP7243575B2 (ja) 電子制御装置およびその動作方法ならびに制御プログラム
JP5601414B2 (ja) マルチコアプロセッサシステム、制御方法、および制御プログラム
JP2014017013A (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Legal Events

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

Ref document number: 12872004

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014505849

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12872004

Country of ref document: EP

Kind code of ref document: A1