(57)【特許請求の範囲】
【請求項１】
複数のコアと、
前記複数のコアによってアクセスされる共用メモリと、
前記複数のコアによる前記共用メモリへのアクセス権の競合を調停する調停回路と、
を有するマルチコアプロセッサシステムであって、前記複数のコアの各コアは、
前記共用メモリへのアクセス速度の前記各コアの実測値を取得し、
前記アクセス速度の前記各コアの実測値と前記各コアのアクセス速度の理論値とから前記各コアの応答性能を算出し、
前記複数のコアの中の特定のコアは、
前記各コアの応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出し、
前記複数のコアによる前記共用メモリへのアクセス権の比率を前記調停回路に通知する、
ことを特徴とするマルチコアプロセッサシステム。
【請求項２】
前記特定のコアは、
前記各コアの応答性能に基づいて、前記各コアの応答性能のばらつき値を算出し、
前記各コアの応答性能のばらつき値が所定の値より大きいか否かを判断し、
前記各コアの応答性能のばらつき値が前記所定の値より大きいと判断した場合、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記各コアの応答性能に基づいて、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出することを特徴とする請求項１に記載のマルチコアプロセッサシステム。
【請求項３】
前記特定のコアは、
前記各コアの応答性能のうち、少なくとも１つのコアの応答性能が所定の閾値以上であるかを判断し、
前記少なくとも１つのコアの応答性能が前記所定の閾値以上であると判断した場合、前記各コアの応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出することを特徴とする請求項２に記載のマルチコアプロセッサシステム。
【請求項４】
前記各コアは、
ソフトウェア内で実行される所定の処理ごとに当該所定の処理が終了される予測時間を記憶するデータベースから、前記各コアに割り当てられたソフトウェアにて実行中の処理に応じた前記予測時間を検索し、
前記各コアに割り当てられたソフトウェアの実行中の処理を、検索した前記予測時間内に終了しないソフトウェアを検出し、
前記所定の処理を前記予測時間内に終了しないソフトウェアを検出した場合、前記共用メモリへのアクセス速度の前記各コアの実測値を取得することを特徴とする請求項３に記載のマルチコアプロセッサシステム。
【請求項５】
前記特定のコアは、
前記各コアの応答性能に基づいて、前記複数のコアのうち応答性能が最も大きいコアを、最も負荷の低いコアとして特定し、
前記最も負荷の低いコアは、
前記複数のコアによる前記共用メモリへのアクセス権の比率を算出することを特徴とする請求項４に記載のマルチコアプロセッサシステム。
【請求項６】
第１のコアと、
前記第１のコアと異なる性能を有する第２のコアと、
前記第１のコアから共用メモリへのアクセス速度の実測値と、前記第２のコアから共用メモリへのアクセス速度の実測値と、前記第１のコアのアクセス速度の論理値と、前記第２のコアのアクセス速度の論理値に基づき、前記第１および第２のコアから共有メモリへのアクセス権の比率を制御する制御部と
を有するマルチコアプロセッサシステム。
【請求項７】
前記制御部は、前記第１および第２のコアのアクセス速度の実測値および論理値に基づき、前記第１および第２のコアの応答性能の劣化を示す応答性能劣化比が略均衡になるように、前記第１および第２のコアから前記共用メモリへのアクセス権の比率を制御する、請求項６に記載のマルチコアプロセッサシステム。
【請求項８】
第１のコアと、
前記第１のコアと異なる性能を有する第２のコアと、
前記第１のコアから共用メモリへのアクセス速度の実測値と、前記第２のコアから共用メモリへのアクセス速度の実測値と、前記第１のコアのアクセス速度の論理値と、前記第２のコアのアクセス速度の論理値に基づき、前記第１および第２のコアから共有メモリへのアクセス権の比率を制御する制御部と、
前記第１または第２のコアの処理結果を表示する表示装置と、
前記第１または第２のコアで処理されるデータを入力するキーボードと
を有するマルチコアプロセッサシステム。
【請求項９】
複数のコアによる共用メモリへのアクセス権の競合を調停する調停回路の制御を行う前記複数のコアの中の特定のコアが、
前記共用メモリへのアクセス速度の前記複数のコアの各コアの実測値を取得し、
前記アクセス速度の前記各コアの実測値と前記各コアのアクセス速度の理論値とから算出される前記各コアの応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出し、
前記複数のコアによる前記共用メモリへのアクセス権の比率を前記調停回路に通知する、
処理を実行することを特徴とする調停回路制御方法。
【請求項１０】
第１のコアおよび前記第１のコアと性能の異なる第２のコアが共通にアクセスする共用メモリへのアクセス権を制御する制御部が、
前記第１のコアから前記共用メモリへの第１のアクセス速度を実測し、
前記第２のコアから前記共用メモリへの第２のアクセス速度を実測し、
前記第１および第２のアクセス速度の実測値および理論値に基づき、前記第１および第２のコアから共有メモリへのアクセス権の比率を制御する
制御方法。
【請求項１１】
複数のコアによる共用メモリへのアクセス権の競合を調停する調停回路の制御を行う前記複数のコアの中の特定のコアに、
前記共用メモリへのアクセス速度の前記複数のコアの各コアの実測値を取得し、
前記アクセス速度の前記各コアの実測値と前記各コアのアクセス速度の理論値とから算出される前記各コアの応答性能に基づいて、前記複数のコアのうちのいずれかのコアのアクセス権の比率が前記いずれかのコアの応答性能より高いコアのアクセス権の比率より大きくなるように、前記複数のコアによる前記共用メモリへのアクセス権の比率を算出し、
前記複数のコアによる前記共用メモリへのアクセス権の比率を前記調停回路に通知する、
処理を実行させることを特徴とする調停回路制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、調停回路を制御するマルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムに関する。
【背景技術】
【０００２】
従来から、コンピュータシステムに複数のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を搭載するマルチコアプロセッサシステムの技術が開示されている。マルチコアプロセッサシステムでは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の機能により、複数のソフトウェアを複数のＣＰＵに割り当てることで、処理を並列化することができる。
【０００３】
マルチコアプロセッサシステムでの資源制御方法として、特定の処理の履歴負荷特性による統計情報を用いて、ＣＰＵの計算能力を動的に増減することで、計算密度の低いコンテンツの電力消費を低減するという技術が開示されている（たとえば、下記特許文献１を参照。）。また、ハードウェアパフォーマンスカウンタを取り付けて動的に負荷量を解析し、あらかじめ設定されたパフォーマンスに満たない場合に、必要なハードウェアリソースを増強するという技術が開示されている（たとえば、下記特許文献２を参照。）。
【０００４】
また、マルチコアプロセッサシステムでは、複数のコアが共用メモリに同時にアクセスすることで、アクセス競合が発生し、パフォーマンスが低下する。メモリのアクセス競合が発生した際に、メモリにアクセスする頻度が少ないＣＰＵに対して低速なクロックを与えることで、メモリにアクセスする頻度が多いＣＰＵのスループットを向上させるという技術が開示されている（たとえば、下記特許文献３を参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００９−５０１４８２号公報
【特許文献２】特表２００９−５２１０５６号公報
【特許文献３】特開平１１−１１０３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術において、特許文献１にかかる技術では、利用者によって任意の操作が行われるような機器では、統計値がとれないという問題があった。たとえば、利用者によって、複数のアプリケーションが任意のタイミングで起動されるシステムである場合、アプリケーションの組合せが膨大となり、統計情報の保存が非現実的になるという問題があった。
【０００７】
また、特許文献２にかかる技術では、メモリのアクセス競合が発生した場合には、遅延しているＣＰＵのクロックをあげるか、メモリのクロックをあげることで対応することになる。前述の対応方法では、消費電力が増大するだけでなく、クロックをあげただけでは、メモリのアクセス競合のパフォーマンス問題を解決できないという問題があった。また、大規模なＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）である場合、パフォーマンスカウンタをどこに配置するか判断するのが難しいという問題があった。一方で、各ＣＰＵやバスなどの、考えられる箇所すべてにパフォーマンスカウンタを配置すると、システム規模が増大するという問題があった。
【０００８】
また、特許文献３にかかる技術では、メモリにアクセスする頻度が少ないＣＰＵを低速にすることにより、キャッシュメモリ上の空間で動作している、低速にする必要がないアプリケーションまで影響を受けてしまうという問題があった。
【０００９】
また、非対称型のマルチコアプロセッサシステムである、ヘテロジニアス・マルチコアでは、非対称型の特性により各ＣＰＵの負荷がアンバランスとなり、ＣＰＵ資源の活用に無駄が生じているという問題があった。
【００１０】
本発明は、上述した従来技術による問題点を解消するため、各ＣＰＵの負荷をバランスよく分散するように是正し、ＣＰＵ資源を有効に活用できるマルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、開示のマルチコアプロセッサシステムは、複数のコアと、コアによってアクセスされる共用メモリと、複数のコアによる共用メモリへのアクセス権の競合を調停する調停回路と、を備えたマルチコアプロセッサシステムであって、共用メモリへのアクセス速度のコアごとの実測値を取得し、取得されたアクセス速度の実測値とコアのアクセス速度の理論値とからコアの応答性能をコアごとに算出し、算出されたコアごとの応答性能に基づいて、コアのアクセス権の比率がコアの応答性能より高いコアのアクセス権の比率より大きくなるように、複数のコアによる共用メモリへのアクセス権の比率を算出し、算出された複数のコアによる共用メモリへのアクセス権の比率を調停回路に通知することを要件とする。
【発明の効果】
【００１２】
本マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムによれば、各ＣＰＵの負荷をバランスよく分散するように是正し、ＣＰＵ資源を有効に活用することができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。
【図２】マルチコアプロセッサシステム１００のハードウェアの一部の構成とソフトウェア構成を示すブロック図である。
【図３】マルチコアプロセッサシステム１００の機能的構成を示すブロック図である。
【図４】プロファイル情報テーブル３０１の記憶内容の一例を示す説明図である。
【図５】マルチコアプロセッサシステム１００でのスレッドの起動開始時点の状態を示す説明図である。
【図６】各ＣＰＵによって共用メモリ２０３へのアクセス競合が発生した状態を示す説明図である。
【図７】ソフトウェアの処理性能に関して異常を検出した状態を示す説明図である。
【図８】負荷是正調停後の状態を示す説明図である。
【図９】負荷是正前後の応答性能の変化を示す説明図である。
【図１０Ａ】調停回路制御処理のフローチャート（その１）である。
【図１０Ｂ】調停回路制御処理のフローチャート（その２）である。
【図１１】性能乖離判断処理のフローチャートである。
【図１２】応答性能計測処理のフローチャートである。
【図１３】負荷状態判定処理のフローチャートである。
【図１４】性能劣化原因判断処理のフローチャートである。
【図１５】負荷是正処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本発明にかかるマルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムの好適な実施の形態を詳細に説明する。
【００１５】
（マルチコアプロセッサシステムのハードウェア構成）
図１は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。図１において、マルチコアプロセッサシステム１００は、ＣＰＵを複数搭載するＣＰＵｓ１０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、を備えている。また、マルチコアプロセッサシステム１００は、フラッシュＲＯＭ１０４と、フラッシュＲＯＭコントローラ１０５と、フラッシュＲＯＭ１０６と、を備えている。また、マルチコアプロセッサシステム１００は、ユーザやその他の機器との入出力装置として、ディスプレイ１０７と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１０８と、キーボード１０９と、を備えている。また、各構成部はバス１１０によってそれぞれ接続されている。
【００１６】
ここで、ＣＰＵｓ１０１は、マルチコアプロセッサシステム１００の全体の制御を司る。ＣＰＵｓ１０１は、シングルコアのプロセッサを並列して接続したすべてのＣＰＵを指している。ＣＰＵｓ１０１の詳細は、図２にて後述する。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるＣＰＵが並列されており、さらに、各ＣＰＵの性能が異なる、ヘテロジニアス・マルチコアを例にあげて説明する。
【００１７】
ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵｓ１０１のワークエリアとして使用される。フラッシュＲＯＭ１０４は、ＯＳなどのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、ＯＳを更新する場合、マルチコアプロセッサシステム１００は、Ｉ／Ｆ１０８によって新しいＯＳを受信し、フラッシュＲＯＭ１０４に格納されている古いＯＳを、受信した新しいＯＳに更新する。
【００１８】
フラッシュＲＯＭコントローラ１０５は、ＣＰＵｓ１０１の制御に従ってフラッシュＲＯＭ１０６に対するデータのリード／ライトを制御する。フラッシュＲＯＭ１０６は、フラッシュＲＯＭコントローラ１０５の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム１００を使用するユーザがＩ／Ｆ１０８を通して取得した画像データ、映像データなどである。フラッシュＲＯＭ１０６は、たとえば、メモリカード、ＳＤカードなどを採用することができる。
【００１９】
ディスプレイ１０７は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０７は、たとえば、ＴＦＴ液晶ディスプレイなどを採用することができる。
【００２０】
Ｉ／Ｆ１０８は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク１１１に接続され、ネットワーク１１１を介して他の装置に接続される。そして、Ｉ／Ｆ１０８は、ネットワーク１１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０８には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２１】
キーボード１０９は、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、キーボード１０９は、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００２２】
図２は、マルチコアプロセッサシステム１００のハードウェアの一部の構成とソフトウェア構成を示すブロック図である。領域２０１に属するブロック図はハードウェアの構成を示しており、領域２０２に属するブロック図はソフトウェアの構成を示している。図２で示されるハードウェアは、共用メモリ２０３と、調停回路２０４と、ＣＰＵｓ１０１に含まれるＳ−ＣＰＵ群２０５およびＬ−ＣＰＵ群２０６と、である。調停回路２０４とＳ−ＣＰＵ群２０５とＬ−ＣＰＵ群２０６は、バス１１０によって接続されている。
【００２３】
共用メモリ２０３は、Ｓ−ＣＰＵ群２０５とＬ−ＣＰＵ群２０６に属するＣＰＵからアクセス可能な記憶領域である。記憶領域とは、具体的には、たとえば、ＲＯＭ１０２、ＲＡＭ１０３、フラッシュＲＯＭ１０４である。
【００２４】
調停回路２０４は、Ｓ−ＣＰＵ群２０５とＬ−ＣＰＵ群２０６に属するＣＰＵによる共用メモリ２０３へのアクセスを制御する。調停回路２０４は、ＣＰＵが共用メモリ２０３にアクセス要求を行った際に、他のＣＰＵが共用メモリ２０３にアクセス中の場合、アクセス要求を行ったＣＰＵを待機させる。他のＣＰＵが共用メモリ２０３にアクセス中でない場合、調停回路２０４はアクセス要求を行ったＣＰＵにアクセス許可を発行する。また、調停回路２０４は、リクエストを管理するバッファが用意されており、ＣＰＵごとにアクセスの比率を設定する。
【００２５】
Ｓ−ＣＰＵ群２０５は、性能の低いＣＰＵの集合であり、ＣＰＵＳ＃１、ＣＰＵＳ＃２、・・・、ＣＰＵＳ＃Ｍで構成する。Ｌ−ＣＰＵ群２０６は、性能の高いＣＰＵの集合であり、ＣＰＵＬ＃１、ＣＰＵＬ＃２、・・・、ＣＰＵＬ＃Ｎで構成する。本実施の形態にかかるマルチコアプロセッサシステム１００では、２種類の性能が異なるＣＰＵ群で構成するが、３種類以上の性能が異なるＣＰＵ群で構成してもよい。各ＣＰＵはローカルキャッシュメモリを搭載する。各ＣＰＵは、ローカルキャッシュメモリにアクセスして演算処理を実行するほか、ローカルキャッシュメモリに記憶されていないデータを必要とする際には、共用メモリ２０３にアクセスする。
【００２６】
図２で示されるソフトウェアは、ＡＭＰ（Ａｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｌｅ  Ｐｒｏｃｅｓｓｏｒ）ハイパーバイザ２０７と、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉｐｌｅ  Ｐｒｏｃｅｓｓｏｒ）  ＯＳ２１４−１とＳＭＰ  ＯＳ２１４−２と、スレッド２１６−１〜スレッド２１６−４と、プロファイル情報２１７−１〜プロファイル情報２１７−４とである。ハイパーバイザとは、ハードウェア上で直接動作するプログラムである。ハイパーバイザは、ＣＰＵ内のレジスタを直接参照したり、ＣＰＵ内のレジスタの情報を読み出したり、ＣＰＵ内のＩ／Ｏ操作を行うような特殊なレジスタの情報を書き換えたりする特権命令を実行することができる。また、ハイパーバイザは、一般のプログラムでは操作できないＣＰＵのキャッシュ制御を行い、一般のプログラムでは読み書きできないメモリ上の空間を用いて動作する。また、ハイパーバイザは、ＯＳとＣＰＵの間にて位置し、前述の特徴によって、ＯＳの監視を行い、ＯＳがハングアップした際にリセットをするほか、ＯＳが何もスレッドを実行していない場合に、省電力設定にする。
【００２７】
ＡＭＰハイパーバイザ２０７は、ＣＰＵごとに異なる機能を持つハイパーバイザの集合である。ＡＭＰハイパーバイザ２０７は、Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８とＬ−ＣＰＵＳＭＰハイパーバイザ２０９で構成する。
【００２８】
Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８は、Ｓ−ＣＰＵ群２０５に属するＣＰＵで実行されるハイパーバイザの集合である。Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８に属するハイパーバイザは、Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８に属するハイパーバイザ間にてハイパーバイザ間通信２１８を行う。また、Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８に属するハイパーバイザは、共用メモリ２０３へのアクセス２２１を調停回路２０４に関して行い、アクセス速度を計測することで、実測値を取得する。
【００２９】
また、本実施の形態では、ＣＰＵＳ＃１はＳ−ＣＰＵハイパーバイザ２１０を実行する。ＣＰＵＳ＃２はＳ−ＣＰＵＳＭＰハイパーバイザ２０８内の他のハイパーバイザを制御するＳ−ＣＰＵハイパーバイザマスタ２１１を実行する。Ｓ−ＣＰＵハイパーバイザマスタ２１１の機能は、Ｓ−ＣＰＵハイパーバイザ２１０が持つ機能に加えて、Ｌ−ＣＰＵＳＭＰハイパーバイザ２０９とハイパーバイザ間通信２１９を行う。また、Ｓ−ＣＰＵハイパーバイザマスタ２１１は、ＳＭＰ  ＯＳ２１４−１のスケジューラ２１５−１と情報通信２２３を行い、調停回路２０４に対してアクセス権の比率の通知２２４を行う。Ｓ−ＣＰＵ群２０５に属するＣＰＵＳ＃１、ＣＰＵＳ＃２以外のＣＰＵも、Ｓ−ＣＰＵハイパーバイザを実行する。
【００３０】
Ｌ−ＣＰＵＳＭＰハイパーバイザ２０９は、Ｌ−ＣＰＵ群２０６に属するＣＰＵで実行されるハイパーバイザの集合である。Ｌ−ＣＰＵＳＭＰハイパーバイザ２０９に属するハイパーバイザは、Ｌ−ＣＰＵＳＭＰハイパーバイザ２０９に属するハイパーバイザ間にてハイパーバイザ間通信２２０を行う。また、Ｌ−ＣＰＵＳＭＰハイパーバイザ２０９に属するハイパーバイザは、共用メモリ２０３へのアクセス２２２を調停回路２０４に関して行い、アクセス速度を計測する。
【００３１】
また、本実施の形態では、ＣＰＵＬ＃２はＬ−ＣＰＵハイパーバイザ２１３を実行する。ＣＰＵＬ＃１はＬ−ＣＰＵＳＭＰハイパーバイザ２０９内の他のハイパーバイザを制御するＬ−ＣＰＵハイパーバイザマスタ２１２を実行する。Ｌ−ＣＰＵハイパーバイザマスタ２１２の機能は、Ｌ−ＣＰＵハイパーバイザ２１３が持つ機能に加えて、Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８とハイパーバイザ間通信２１９を行う。また、Ｌ−ＣＰＵハイパーバイザマスタ２１２は、ＳＭＰ  ＯＳ２１４−２のスケジューラ２１５−２と情報通信２２５を行い、調停回路２０４に対してアクセス権の比率の通知２２６を行う。Ｌ−ＣＰＵ群２０６に属するＣＰＵＬ＃１、ＣＰＵＬ＃２以外のＣＰＵも、Ｓ−ＣＰＵハイパーバイザを実行する。
【００３２】
ＳＭＰ  ＯＳ２１４−１とＳＭＰ  ＯＳ２１４−２は、それぞれＳ−ＣＰＵ群２０５とＬ−ＣＰＵ群２０６上で実行されるＯＳである。ＳＭＰ  ＯＳ２１４−１とＳＭＰ  ＯＳ２１４−２は、それぞれスケジューラ２１５−１、スケジューラ２１５−２の機能により、スレッド２１６−１〜スレッド２１６−４をＣＰＵｓ１０１に割り当てる。本実施の形態では、スレッド２１６−１はＣＰＵＳ＃１に、スレッド２１６−２はＣＰＵＳ＃２に、スレッド２１６−３はＣＰＵＬ＃１に、スレッド２１６−４はＣＰＵＬ＃２に割り当てられる。
【００３３】
プロファイル情報２１７−１〜プロファイル情報２１７−４は、それぞれ、スレッド２１６−１〜スレッド２１６−４に対応したプロファイル情報である。プロファイル情報の詳細は、図４にて後述する。スケジューラ２１５−１、スケジューラ２１５−２はプロファイル情報を取得し、スレッド２１６−１〜スレッド２１６−４が本来の処理性能から乖離していないかを確認する。
【００３４】
（マルチコアプロセッサシステム１００の機能的構成）
つぎに、マルチコアプロセッサシステム１００の機能的構成について説明する。図３は、マルチコアプロセッサシステム１００の機能的構成を示すブロック図である。マルチコアプロセッサシステム１００は、検索部３０２と、検出部３０３と、取得部３０４と、応答性能算出部３０５と、集約部３０６と、特定部３０７と、応答性能ばらつき値算出部３０８と、判断部３０９と、アクセス比率算出部３１０と、通知部３１１と、を含む構成である。この制御部となる機能（検索部３０２〜通知部３１１）は、記憶装置に記憶されたプログラムをＣＰＵｓ１０１が実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、共用メモリ２０３などである。
【００３５】
また、マルチコアプロセッサシステム１００は、ソフトウェア内で実行される所定の処理ごとに所定の処理が終了される予測時間を記憶するデータベースとして、プロファイル情報テーブル３０１を共用メモリ２０３に保持する。プロファイル情報テーブル３０１の詳細は、図４にて後述する。
【００３６】
また、検索部３０２、検出部３０３は、ＳＭＰ  ＯＳ２１４−１、ＳＭＰ  ＯＳ２１４−２の機能に含まれる。同様に、取得部３０４〜通知部３１１は、ＡＭＰハイパーバイザ２０７の機能に含まれる。また、集約部３０６は、ＣＰＵＳ＃２、ＣＰＵＬ＃１の機能として図示されているが、どのＣＰＵに存在してもよい。特定部３０７も同様である。また、本実施の形態では、特定部３０７によってＣＰＵＬ＃３が特定され、応答性能ばらつき値算出部３０８〜通知部３１１は、ＣＰＵＬ＃３の機能として図示されている。特定部３０７によって他のＣＰＵが特定されてもよく、その場合、応答性能ばらつき値算出部３０８〜通知部３１１は、特定されたＣＰＵの機能となる。
【００３７】
検索部３０２は、プロファイル情報テーブル３０１から、コアに割り当てられたソフトウェアにて実行中の処理に応じた予測時間を検索する機能を有する。コアとは、ＣＰＵｓ１０１に属するそれぞれのＣＰＵである。具体的には、たとえば、ＣＰＵＳ＃１にてＵＩスレッドが実行されている場合に、ＣＰＵＳ＃１は、プロファイル情報テーブル３０１から、運用前実行時間ｔと、デッドライン時間Ｄを取得する。取得した時間ｔとＤのうち、小さい値を予測時間としてもよいし、システム化によるオーバーヘッドτを考慮し、ｔ・（１＋τ）とＤのうち、小さい値を予測時間としてもよい。なお、検索された予測時間は、共用メモリ２０３などの記憶領域に記憶される。
【００３８】
検出部３０３は、コアに割り当てられたソフトウェアの実行中の処理を検索部３０２によって検索された予測時間内に終了しないソフトウェアをコアごとに検出する機能を有する。具体的には、たとえば、ＣＰＵＳ＃２にてウィンドウ制御スレッドが割り当てられた場合、ウィンドウ制御スレッド内の描画更新処理が、ｔ・（１＋τ）時間、または、Ｄ時間経過しても終了しないことを検出する。なお、検出された結果は、ＡＭＰハイパーバイザ２０７に通知されるほか、共用メモリ２０３などの記憶領域に記憶されてもよい。
【００３９】
取得部３０４は、共用メモリ２０３へのアクセス速度のコアごとの実測値を取得する機能を有する。また、取得部３０４は、検出部３０３によって、予測時間内に終了しないソフトウェア検出された場合に、実測値を取得してもよい。具体的には、たとえば、ＣＰＵＳ＃１は、共用メモリ２０３へアクセスし、Ｒｅａｄ／Ｗｒｉｔｅにかかった時間から、アクセス速度を計測することで、実測値を取得する。なお、取得された実測値は、各ＣＰＵのレジスタ、または、キャッシュメモリに記憶される。
【００４０】
応答性能算出部３０５は、取得部３０４によって取得されたアクセス速度の実測値とコアのアクセス速度の理論値とからコアの応答性能をコアごとに算出する機能を有する。応答性能とは、応答性能劣化比Ｒであり、応答性能劣化比Ｒは、実測値／理論値で求められる。また、応答性能劣化比Ｒでの計算における分子分母を逆にして応答性能を表してもよい。アクセス速度の理論値とは、負荷がかかっていない状態での、ＣＰＵによる共用メモリ２０３のアクセス速度となる。また、応答性能算出部３０５は、ハイパーバイザから取得できる発行命令カウンタと動作クロックの比率を応答性能としてもよい。
【００４１】
具体的には、たとえば、理論値が１００［Ｍｂｐｓ］であり、実測値が２０［Ｍｂｐｓ］である場合、応答性能劣化比Ｒは、２０／１００＝０．２となる。なお、算出された応答性能劣化比Ｒは、各ＣＰＵのレジスタ、または、キャッシュメモリに記憶される。
【００４２】
集約部３０６は、応答性能算出部３０５によって算出された応答性能を集約する機能を有する。具体的には、たとえば、ＣＰＵＳ＃２の集約部３０６は、Ｓ−ＣＰＵＳＭＰハイパーバイザ２０８内にて算出された応答性能劣化比Ｒを集約する。同様に、ＣＰＵＬ＃１の集約部３０６は、ＡＭＰハイパーバイザ２０７内にて算出された応答性能劣化比Ｒを集約する。具体的な集約方法の例として、各ハイパーバイザによって応答性能劣化比Ｒがレジスタ、またはキャッシュメモリに書き込まれたことを一定周期で確認し、すべてのハイパーバイザが書き込みを終えた段階で、集約したとする。
【００４３】
特定部３０７は、応答性能算出部３０５によって算出されたコアごとの応答性能に基づいて、複数のコアのうち応答性能が最も大きいコアを、最も負荷の低いコアとして特定する機能を有する。具体的には、たとえば、応答性能劣化比Ｒが、ＣＰＵＳ＃１：ＣＰＵＳ＃２：ＣＰＵＬ＃１：ＣＰＵＬ＃２：ＣＰＵＬ＃３＝０．２：０．３：０．８：０．９：１．０となった場合に、ＣＰＵＬ＃３を最も負荷の低いＣＰＵとして特定する。なお、特定されたＣＰＵの情報は、各ＣＰＵのレジスタ、または、キャッシュメモリに記憶される。
【００４４】
応答性能ばらつき値算出部３０８は、応答性能算出部３０５によって算出されたコアごとの応答性能に基づいて、コアごとの応答性能のばらつき値を算出する機能を有する。応答性能のばらつき値とは、たとえば、標準偏差であってもよいし、四分位範囲、平均差、平均偏差等の他の統計的ばらつき値を使用してもよい。また、応答性能ばらつき値算出部３０８は、特定部３０７によって最も負荷の低いＣＰＵとして特定されたＣＰＵにより、応答性能のばらつき値を算出してもよい。
【００４５】
具体的には、たとえば、応答性能のばらつき値として標準偏差を使用する場合を想定する。前述の例として応答性能劣化比Ｒが、ＣＰＵＳ＃１：ＣＰＵＳ＃２：ＣＰＵＬ＃１：ＣＰＵＬ＃２：ＣＰＵＬ＃３＝０．２：０．３：０．８：０．９：１．０である場合は、標準偏差σは、約０．３２６として算出される。なお、算出された応答性能のばらつき値は、応答性能ばらつき値算出部３０８を実行したＣＰＵのレジスタ、または、キャッシュメモリに記憶される。
【００４６】
判断部３０９は、応答性能ばらつき値算出部３０８によって算出された応答性能のばらつき値が所定の値より大きいか否かを判断する機能を有する。所定の値は、たとえば誤差Δであり、数値としては０．１等である。また、判断部３０９は、応答性能算出部３０５によって算出されたコアごとの応答性能のうち、少なくとも１つのコアの応答性能が所定の閾値以上であるかを判断してもよい。また、判断部３０９は、特定部３０７によって最も負荷の低いＣＰＵとして特定されたＣＰＵにより、判断を行ってもよい。
【００４７】
具体的には、たとえば、応答性能のばらつき値σ＝０．３２６であり誤差Δ＝０．１であれば、ＣＰＵＬ＃３は、応答性能のばらつき値σが誤差Δより大きいと判断する。なお、判断結果は、判断部３０９を実行したＣＰＵのレジスタ、または、キャッシュメモリに記憶される。
【００４８】
アクセス比率算出部３１０は、応答性能算出部３０５によって算出されたコアごとの応答性能に基づいて、複数のコアによる共用メモリ２０３へのアクセス権の比率を算出する機能を有する。さらに、アクセス比率算出部３１０は、あるコアのアクセス権の比率があるコアの応答性能より高いコアのアクセス権の比率より大きくなるように算出する。
【００４９】
また、アクセス比率算出部３１０は、判断部３０９によって応答性能のばらつき値が所定の値より大きいと判断された場合に、アクセス権の比率を算出してもよい。また、アクセス比率算出部３１０は、判断部３０９によってコアごとの応答性能のうち、少なくとも１つのコアの応答性能が所定の閾値以上であると判断された場合に、アクセス権の比率を算出してもよい。また、アクセス比率算出部３１０は、特定部３０７によって最も負荷の低いＣＰＵとして特定されたＣＰＵにより、アクセス権の比率を算出してもよい。
【００５０】
算出方法の一つとしては、ＣＰＵ１、ＣＰＵ２、・・・、ＣＰＵｃｎｔの応答性能劣化比Ｒを、Ｒ１、Ｒ２、・・・、Ｒｃｎｔとし、ＣＰＵがＣＮＴ個あるとすると、各ＣＰＵのアクセス権の比率を以下の（１）式のように求めてもよい。
【００５１】
ＣＰＵ１：・・・：ＣＰＵｃｎｔ＝（（ΣＲｎ）−Ｒ１）／（（ＣＮＴ−１）・（ΣＲｎ））：・・・：（（ΣＲｎ）−Ｒｃｎｔ）／（（ＣＮＴ−１）・（ΣＲｎ））  ・・・（１）
【００５２】
ΣＲｎは、ＣＰＵ１、ＣＰＵ２、・・・、ＣＰＵｃｎｔの応答性能劣化比Ｒの総和である。式（１）での（ＣＮＴ−１）にて除算を行っているが、除算を行うことにより、ＣＰＵ１〜ＣＰＵｃｎｔのアクセス権の比率の合計を１にすることができる。合計を１にする必要がない場合、（ＣＮＴ−１）とΣＲｎで除算を行わなくてもよい。また、他の算出方法としては、以下の（２）式でもよい。
【００５３】
ＣＰＵ１：・・・：ＣＰＵｃｎｔ＝１／Ｒ１：・・・：１／Ｒｃｎｔ＝ΠＲｎ／Ｒ１：・・・：ΠＲｎ／Ｒｃｎｔ  ・・・（２）
【００５４】
ΠＲｎは、ＣＰＵ１、ＣＰＵ２、・・・、ＣＰＵｃｎｔの応答性能劣化比Ｒの総積である。また、（１）式または（２）式にて、特定のＣＰＵに重み付けを行ってもよい。たとえば、（１）式または（２）式でアクセス権の比率を算出した後、Ｓ−ＣＰＵハイパーバイザマスタ２１１とＣＰＵハイパーバイザマスタ２１２を実行するＣＰＵＳ＃２、ＣＰＵＬ＃１に１以上の係数をかけてもよい。これにより、マルチコアプロセッサシステム１００のＣＰＵの負荷のバランスを是正しつつ、特定のＣＰＵを優先することができる。
【００５５】
具体的には、たとえば、ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１の応答性能劣化比Ｒが、それぞれ、ＲＳ＃１＝０．３、ＲＳ＃２＝０．２、ＲＬ＃１＝０．６７であった場合を想定する。このとき、ＣＰＵＬ＃３は、ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１のアクセス権の比率を、（１）式から０．４１：０．３７：０．２１として算出する。なお、算出されたアクセス権の比率は、アクセス比率算出部３１０を実行したＣＰＵのレジスタ、または、キャッシュメモリに記憶される。
【００５６】
通知部３１１は、アクセス比率算出部３１０によって算出された複数のコアによる共用メモリ２０３へのアクセス権の比率を調停回路２０４に通知する機能を有する。また、通知部３１１は、特定部３０７によって最も負荷の低いＣＰＵとして特定されたＣＰＵにより、アクセス権の比率を通知してもよい。具体的には、たとえば、ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１のアクセス権の比率が、０．４１：０．３７：０．２１である場合、ＣＰＵＬ＃３は、調停回路２０４のレジスタに前述の比率を設定する。また、調停回路２０４のレジスタに整数にて設定する場合、ＣＰＵＬ＃３は、アクセス権の比率を、２９：２６：１５で通知する。
【００５７】
図４は、プロファイル情報テーブル３０１の記憶内容の一例を示す説明図である。プロファイル情報テーブル３０１は、スレッド名称、処理内容、運用前実行時間ｔ、デッドライン時間Ｄという４つのフィールドで構成する。スレッド名称フィールドは、処理の名称を格納する。具体的には、スレッドの開始アドレスが設定されており、ＣＰＵは、スレッドの開始アドレスを参照して処理を実行する。
【００５８】
処理内容フィールドは、スレッド内の共用メモリ２０３にアクセスする処理を格納する。一つのスレッドに共用メモリ２０３にアクセスする処理が複数あれば、複数の処理をプロファイル情報テーブル３０１に登録してもよい。運用前実行時間ｔフィールドは、アクセス競合が発生していない状態で、処理内容フィールドに格納された処理内容を実行した際に消費した時間を格納する。デッドライン時間Ｄフィールドは、処理内容フィールドに格納された処理内容を実行する際に収容時間が決定している場合に、終了時間を格納する。
【００５９】
具体的には、たとえば、ＵＩスレッドは、処理内容としてはＵＩ応答処理がある。ＵＩ応答処理の例としては、カーソル移動によるカーソル画像の更新処理である。ＵＩ応答処理を負荷のない時点でＣＰＵが行い、１［ミリ秒］で処理が終了した場合、運用前実行時間ｔフィールドは１［ミリ秒］に設定する。また、ＵＩ応答処理の仕様として１０［ミリ秒］以内に終了する必要がある場合に、デッドライン時間Ｄフィールドは１０［ミリ秒］となる。
【００６０】
同様に、ウィンドウ制御スレッドは、処理内容として、描画更新処理がある。描画更新処理の例としては、ウィンドウ画面サイズの画像データの更新処理である。ウィンドウ制御スレッドに関しても計測を行い、運用前実行時間ｔフィールドを１４［ミリ秒］に設定する。ウィンドウ制御スレッドの仕様として６０［ｆｐｓ］（Ｆｒａｍｅ  Ｐｅｒ  Ｓｅｃｏｎｄ）で更新する必要があれば、１回の描画更新処理における許容時間は、１／６０≒１６［ミリ秒］である。したがって、デッドライン時間Ｄフィールドは１６［ミリ秒］となる。
【００６１】
同様に、動画再生スレッドは、処理内容として、フレーム処理がある。フレーム処理の例としては、動画１フレーム分の画像データの更新処理である。動画再生スレッドに関しても計測を行い、運用前実行時間ｔフィールドを１２［ミリ秒］に設定する。動画再生スレッドの仕様として、たとえば、動画を３０［ｆｐｓ］で再生する必要がある場合には、１回のフレーム処理における許容時間は、１／３０≒３３［ミリ秒］である。したがって、デッドライン時間Ｄフィールドは３３［ミリ秒］となる。
【００６２】
同様に、Ｗｅｂブラウザスレッドは、処理内容として、コンテンツ処理がある。コンテンツ処理の例としては、コンテンツ画面の更新処理である。Ｗｅｂブラウザスレッドに関しても計測を行い、運用前実行時間ｔフィールドを５０［ミリ秒］に設定する。Ｗｅｂブラウザスレッドの終了時間に関して仕様が特にない場合、デッドライン時間Ｄフィールドは時間制約なしとなる。
【００６３】
図５〜図８では、マルチコアプロセッサシステム１００にて、スレッド起動から各ＣＰＵにより共用メモリ２０３への競合状態となり、ソフトウェアの処理性能に関して異常を検出した後に負荷是正を行い、負荷の不均衡を是正する、といった一連の状態を示す。
【００６４】
図５は、マルチコアプロセッサシステム１００でのスレッドの起動開始時点の状態を示す説明図である。図５では、スレッド２１６−１としてＵＩスレッド、スレッド２１６−２としてウィンドウ制御スレッド、スレッド２１６−４としてＷｅｂブラウザスレッドがそれぞれに割り当てられている状態とする。前述の状態で、マルチコアプロセッサシステム１００は、ＵＩスレッドによって動画再生スレッドが呼び出され、スケジューラ２１５−１、スケジューラ２１５−２によってスレッド２１６−３として動画処理が割り当てられる。
【００６５】
また、各スレッドのプロファイル情報はプロファイル情報テーブル３０１から検索されることで取得する。具体的には、ＵＩスレッドに対応するプロファイル情報２１７−１は、処理内容がＵＩ応答処理で、予測時間が１０［ミリ秒］とする。同様に、ウィンドウ制御スレッドに対応するプロファイル情報２１７−２は、処理内容が描画更新処理であり、仕様である６０［ｆｐｓ］から、予測時間を１６［ミリ秒］とする。動画再生スレッドに対応するプロファイル情報２１７−３は、処理内容がフレーム処理であり、仕様である３０［ｆｐｓ］から、予測時間を３３［ミリ秒］とする。Ｗｅｂブラウザスレッドに対応するプロファイル情報２１７−４は、処理内容がコンテンツ処理となる。終了時間の制約については特になしとする。
【００６６】
図６は、各ＣＰＵによって共用メモリ２０３へのアクセス競合が発生した状態を示す説明図である。ＣＰＵＳ＃２で実行されているウィンドウ制御スレッドは、スムースな描画を実現するために、６０［ｆｐｓ］という高フレームレートで描画を繰り返している。一方、ＣＰＵＬ＃１で実行されている動画再生スレッドは、Ｉ／Ｏは少ないものの、性能の高いＣＰＵで実行されているために、共用メモリ２０３へのアクセス権を獲得しやすい状態である。
【００６７】
したがって、ウィンドウ制御スレッドのアクセス量６０１は、動画再生スレッドのアクセス量６０２と比較して多いにもかかわらず、共用メモリ２０３へのアクセス権は、動画再生スレッドの方が獲得しやすい状態となっている。
【００６８】
図７は、ソフトウェアの処理性能に関して異常を検出した状態を示す説明図である。ＳＭＰ  ＯＳ２１４−１と、ＳＭＰ  ＯＳ２１４−２は、各スレッドの処理性能がプロファイル情報に記載されている処理性能から乖離しているか否かを検出する。図６の段階で、ウィンドウ制御スレッドのアクセス量６０１が多いにもかかわらず、共用メモリ２０３へのアクセス権を獲得しづらい状態であったため、ウィンドウ制御スレッドの処理性能は、劣化する。そして、ウィンドウ制御スレッドの描画更新処理が、プロファイル情報である６０［ｆｐｓ］、描画更新処理の予測時間である１６［ミリ秒］以内に処理を終了しないとなった場合に、ＳＭＰ  ＯＳ２１４−１は異常として検出する。
【００６９】
異常を検出後、ＳＭＰ  ＯＳ２１４−１は、ＡＭＰハイパーバイザ２０７に異常が検出されたことを通知する。ＡＭＰハイパーバイザ２０７内では、Ｓ−ＣＰＵハイパーバイザマスタ２１１とＬ−ＣＰＵハイパーバイザマスタ２１２が情報を通知し、負荷是正を行うか否かを判断する。
【００７０】
図８は、負荷是正調停後の状態を示す説明図である。図８では、ＡＭＰハイパーバイザ２０７内にて、共用メモリ２０３へのアクセス権の比率を変更することで負荷是正を行うと判断された状態である。具体的には、ＣＰＵＳ＃２が、Ｓ−ＣＰＵハイパーバイザマスタ２１１の機能により調停回路２０４に対して、アクセス権の比率を、たとえば、ＣＰＵＳ＃２：ＣＰＵＬ＃１＝２：１にするよう設定する。設定した結果、ＣＰＵＳ＃２は、共用メモリ２０３へのアクセス権を獲得しやすくなるため、高負荷であったＣＰＵＳ＃２の負荷を低減し、マルチコアプロセッサシステム１００の各ＣＰＵの負荷をバランスよくすることができる。また、ウィンドウ制御スレッドの処理性能を改善し、処理性能の仕様を準拠することができる。
【００７１】
また、図８のアクセス権の比率の設定の結果、ＣＰＵＬ＃１にて実行中である動画再生スレッドの性能が劣化した場合には、図７で示すように、ＳＭＰ  ＯＳ２１４−２にて異常を検出し、ＡＭＰハイパーバイザ２０７によってアクセス権の比率の設定が行われる。
【００７２】
図９は、負荷是正前後の応答性能の変化を示す説明図である。符号９０１で示す表は、各ＣＰＵの応答性能の一例を示している。ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１のピーク応答性能ｐは、それぞれ１００［Ｍｂｐｓ］、１００［Ｍｂｐｓ］、１５０［Ｍｂｐｓ］である。同様に、測定応答性能ｒは、それぞれ、２０［Ｍｂｐｓ］、３０［Ｍｂｐｓ］、１００［Ｍｂｐｓ］である。また、調停回路２０４の転送能力を、１５０［Ｍｂｐｓ］とする。この状態で、共用メモリ２０３へのアクセス権の比率を算出する。
【００７３】
符号９０２で示すブロック図にて、調停前と調停後の応答性能劣化比Ｒを示す。ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１の応答性能劣化比Ｒは、それぞれ、ＲＳ＃１＝２０／１００、ＲＳ＃２＝３０／１００、ＲＬ＃１＝１００／１５０と求められる。
【００７４】
ＣＰＵＳ＃１による調停回路２０４へのアクセス権の比率は、式（１）より以下のように求められる。
【００７５】
（（３０／１００）＋（１００／１５０））／（（３−１）・（（２０／１００）＋（３０／１００）＋（１００／１５０）））＝２９／７０≒０．４１
【００７６】
同様に、ＣＰＵＳ＃２のアクセス権の比率は、以下のように求められる。
【００７７】
（（２０／１００）＋（１００／１５０））／（（３−１）・（（２０／１００）＋（３０／１００）＋（１００／１５０）））＝１３／３５≒０．３７
【００７８】
同様に、ＣＰＵＬ＃１のアクセス権の比率は、以下のように求められる。
【００７９】
（（２０／１００）＋（３０／１００））／（（３−１）・（（２０／１００）＋（３０／１００）＋（１００／１５０）））＝３／１４≒０．２１
【００８０】
したがって、ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１による調停回路２０４のアクセス権の比率は、０．４１：０．３７：０．２１となる。調停回路２０４のレジスタに設定する際に整数を設定する場合、アクセス権の比率は、２９：２６：１５となる。この比率で、調停回路２０４の転送能力１５０［Ｍｂｐｓ］を分配した場合、ＣＰＵＳ＃１、ＣＰＵＳ＃２、ＣＰＵＬ＃１の測定応答性能劣化比Ｒは、以下のようになる。
【００８１】
ＣＰＵＳ＃１：１５０×２９／（２９＋２６＋１５）≒６２［Ｍｂｐｓ］
ＣＰＵＳ＃２：１５０×２６／（２９＋２６＋１５）≒５６［Ｍｂｐｓ］
ＣＰＵＬ＃１：１５０×１５／（２９＋２６＋１５）≒３２［Ｍｂｐｓ］
【００８２】
したがって、調停後の各ＣＰＵの応答性能劣化比Ｒは、それぞれ、ＲＳ＃１＝６２／１００、ＲＳ＃２＝５６／１００、ＲＬ＃１＝３２／１５０となる。
【００８３】
符号９０３で示すグラフは、調停前と調停後の応答性能劣化比Ｒの変化を示すグラフである。グラフにて示されるように、調停前の応答性能劣化比Ｒが小さいＣＰＵほど、調停後の応答性能劣化比Ｒが大きくなり、ＣＰＵごとに偏った負荷を分散することができる。具体的には、調停前に応答性能劣化比Ｒが小さく、高負荷であったＣＰＵＳ＃１、ＣＰＵＳ＃２の応答性能劣化比Ｒが上昇し、ＣＰＵＳ＃１、ＣＰＵＳ＃２の負荷が減少する。
【００８４】
図１０Ａ、図１０Ｂは、調停回路制御処理のフローチャートである。調停回路制御処理は、大きく分けて４つの処理に分解できる。４つの処理とは、検出処理、計測処理、集約処理、負荷是正処理である。検出処理は、ＳＭＰ  ＯＳ２１４−１、ＳＭＰ  ＯＳ２１４−２を実行する各ＣＰＵで実行される。計測処理は、ハイパーバイザを実行する各ＣＰＵで実行される。集約処理は、Ｓ−ＣＰＵハイパーバイザマスタ２１１、Ｌ−ＣＰＵハイパーバイザマスタ２１２を実行するＣＰＵで実行される。負荷是正処理は、負荷の最も低いＣＰＵで実行される。
【００８５】
検出処理は、ステップＳ１００１〜ステップＳ１０１０にて示される処理である。検出処理の機能は、実行中のスレッドの処理性能が低下したことを検出することである。ステップＳ１００１〜ステップＳ１００５は、Ｓ−ＣＰＵ群２０５に属するすべてのＣＰＵが実行する。ステップＳ１００６〜ステップＳ１０１０は、Ｌ−ＣＰＵ群２０６に属するすべてのＣＰＵが実行する。ステップＳ１００１〜ステップＳ１００５に関して、本実施の形態では、Ｓ−ＣＰＵ群２０５のうち、ＣＰＵＳ＃２が検出処理を実行する場合を説明する。
【００８６】
ＣＰＵＳ＃２は、性能乖離判断処理を実行する（ステップＳ１００１）。性能乖離判断処理の詳細は、図１１にて後述する。実行後、ＣＰＵＳ＃２は、判断結果として、乖離が大かを判断する（ステップＳ１００２）。乖離大と判断された場合（ステップＳ１００２：Ｙｅｓ）、ＣＰＵＳ＃２は、すべてのハイパーバイザへ乖離大となったスレッドが検出されたことを通知する（ステップＳ１００３）。具体的には、たとえば、ＣＰＵＳ＃２は、ＣＰＵＳ＃１、ＣＰＵＳ＃２、・・・、ＣＰＵＳ＃Ｍと、ＣＰＵＬ＃１、ＣＰＵＬ＃２、・・・、ＣＰＵＬ＃Ｎとで実行されているハイパーバイザに通知する。
【００８７】
乖離小であると判断された場合（ステップＳ１００２：Ｎｏ）、ＣＰＵＳ＃２は、通常負荷分散処理を実行する（ステップＳ１００４）。通常負荷分散処理とは、スケジューラの機能によって負荷分散を行う処理である。具体的には、たとえば、スケジューラは、優先度の低いスレッドを退避し、ＣＰＵの負荷を低下させる。ステップＳ１００３、ステップＳ１００４の処理終了後、ＣＰＵＳ＃２は、一定時間待機を行い（ステップＳ１００５）、ステップＳ１００１の処理に移行する。
【００８８】
続けて、Ｌ−ＣＰＵ群２０６に属するすべてのＣＰＵは、ステップＳ１００６〜ステップＳ１０１０を実行する。ステップＳ１００６〜ステップＳ１０１０の処理は、ステップＳ１００１〜ステップＳ１００５の処理と等しいため、説明は省略する。また、ステップＳ１００８でも、ＣＰＵはすべてのハイパーバイザに通知する。具体的には、たとえば、ＣＰＵＬ＃２は、ＣＰＵＳ＃１、ＣＰＵＳ＃２、・・・、ＣＰＵＳ＃Ｍと、ＣＰＵＬ＃１、ＣＰＵＬ＃２、・・・、ＣＰＵＬ＃Ｎとで実行されているハイパーバイザに通知する。
【００８９】
計測処理は、ステップＳ１０２１〜ステップＳ１０２８にて示される処理である。計測処理の機能は、ＣＰＵの応答性能を計測することである。計測処理は、検出処理から通知されることによって起動のトリガーを与えられ、各ＣＰＵがハイパーバイザの機能によって実行される。たとえば、ＣＰＵＳ＃１は、Ｓ−ＣＰＵハイパーバイザ２１０の機能によって計測処理となるステップＳ１０２１、ステップＳ１０２２を実行する。
【００９０】
ステップＳ１００３、またはステップＳ１００８から通知を受けたＣＰＵＳ＃１は、応答性能計測処理を実行する（ステップＳ１０２１）。応答性能計測処理の詳細は、図１２にて後述する。実行後、ＣＰＵＳ＃１は、Ｓ−ＣＰＵハイパーバイザマスタ２１１へ応答性能劣化比Ｒを通知し（ステップＳ１０２２）、処理を終了する。ステップＳ１０２２の処理の具体例として、ＣＰＵＳ＃１は、ＣＰＵＬ＃２のレジスタまたはキャッシュメモリに、応答性能劣化比Ｒを書き込む。ＣＰＵＳ＃１は、応答性能劣化比Ｒを計算せずに測定応答性能ｒとピーク応答性能ｐの２つの値を記述してもよい。
【００９１】
同様に、ＣＰＵＳ＃２も、ステップＳ１０２３、ステップＳ１０２４を実行する。ステップＳ１０２３、ステップＳ１０２４の処理は、ステップＳ１０２１、ステップＳ１０２２の処理と等しいため、説明は省略する。
【００９２】
ステップＳ１００３、またはステップＳ１００８から通知を受けたＣＰＵＬ＃１もＣＰＵＳ＃１と同様に、応答性能計測処理を実行する（ステップＳ１０２５）。実行後、ＣＰＵＬ＃１は、Ｌ−ＣＰＵハイパーバイザマスタ２１２へ応答性能劣化比Ｒを通知し（ステップＳ１０２６）、処理を終了する。同様に、ＣＰＵＬ＃２も、ステップＳ１０２７、ステップＳ１０２８を実行する。ステップＳ１０２７、ステップＳ１０２８の処理は、ステップＳ１０２５、ステップＳ１０２６の処理と等しいため、説明は省略する。
【００９３】
集約処理は、ステップＳ１０４１〜ステップＳ１０４５にて示される処理である。集約処理の機能は、計測された応答性能劣化比Ｒを集約することである。集約処理は、計測処理から通知されることによって起動のトリガーを与えられ、ＣＰＵがハイパーバイザの機能によって実行される。具体的には、たとえば、ＣＰＵＳ＃２は、Ｓ−ＣＰＵハイパーバイザマスタ２１１の機能によって集約処理となるステップＳ１０４１、ステップＳ１０４２を実行する。同様に、ＣＰＵＬ＃１は、Ｌ−ＣＰＵハイパーバイザマスタ２１２の機能によって集約処理となるステップＳ１０４３〜ステップＳ１０４５を実行する。
【００９４】
ステップＳ１０２２、またはステップＳ１０２４から通知を受けたＣＰＵＳ＃２は、ＣＰＵＳ＃１〜ＣＰＵＳ＃Ｍの応答性能劣化比Ｒを集約する（ステップＳ１０４１）。ステップＳ１０２２の処理の具体例として、ＣＰＵＳ＃２は、ＣＰＵＳ＃１〜ＣＰＵＳ＃Ｍの応答性能が書き込まれるレジスタ群、またはキャッシュメモリの値を０クリアする。その後、ＣＰＵＳ＃２はすべての領域にそれぞれのＣＰＵの応答性能劣化比Ｒが書き込まれているかを確認する。
【００９５】
すべての領域に応答性能劣化比Ｒが書き込まれていることを確認後、ＣＰＵＳ＃２は、ステップＳ１０４１の処理を終える。応答性能劣化比Ｒを集約後、ＣＰＵＳ＃２は、Ｌ−ＣＰＵハイパーバイザマスタ２１２へ集約が終えたことを通知し（ステップＳ１０４２）、処理を終了する。
【００９６】
同様に、ステップＳ１０２６、またはステップＳ１０２８から通知を受けたＣＰＵＬ＃１は、ＣＰＵＬ＃１〜ＣＰＵＬ＃Ｎの応答性能劣化比Ｒを集約する（ステップＳ１０４３）。ステップＳ１０４３終了後、ＣＰＵＳ＃２から通知を受けたＣＰＵＬ＃１は、すべてのＣＰＵの応答性能劣化比Ｒを集約する（ステップＳ１０４４）。集約後、ＣＰＵＬ＃１は、最も応答性能劣化比Ｒが高いＣＰＵを、最も負荷の低いＣＰＵとして特定し（ステップＳ１０４５）、処理を終了する。特定されたＣＰＵは、負荷是正処理を実行する。
【００９７】
負荷是正処理は、ステップＳ１０６１〜ステップＳ１０６６にて示される処理である。負荷是正処理の機能は、マルチコアプロセッサシステム１００のＣＰＵごとの負荷をバランスよく是正することである。負荷是正処理は、集約処理によって特定されたＣＰＵのハイパーバイザの機能によって実行される。たとえば、ＣＰＵＬ＃３が集約処理によって特定された場合、ＣＰＵＬ＃３は、Ｌ−ＣＰＵハイパーバイザの機能によって負荷是正処理となるステップＳ１０６１〜ステップＳ１０６６を実行する。本実施の形態では、集約処理によって特定されたＣＰＵは、ＣＰＵＬ＃３であった場合を想定して説明を行う。
【００９８】
集約処理にて特定されたＣＰＵＬ＃３は、負荷状態判定処理を実行する（ステップＳ１０６１）。負荷状態判定処理の詳細は、図１３にて後述する。処理終了後、ＣＰＵＬ＃３は、負荷状態が均衡かを判断する（ステップＳ１０６２）。“均衡”であると判断された場合（ステップＳ１０６２：Ｙｅｓ）、ＣＰＵＬ＃３は集約処理を終了する。“不均衡”であると判断された場合（ステップＳ１０６２：Ｎｏ）、ＣＰＵＬ＃３は、性能劣化原因判断処理を実行する（ステップＳ１０６３）。性能劣化原因判断処理の詳細は、図１４にて後述する。
【００９９】
処理終了後、ＣＰＵＬ＃３は、性能劣化原因が“競合による性能劣化”かを判断する（ステップＳ１０６４）。“競合による性能劣化”であると判断された場合（ステップＳ１０６４：Ｙｅｓ）、ＣＰＵＬ＃３は、負荷是正処理を実行し（ステップＳ１０６５）、負荷是正処理を終了する。負荷是正処理の詳細は、図１５にて後述する。“高負荷による性能劣化”と判断された場合（ステップＳ１０６４：Ｎｏ）、ＣＰＵＬ＃３は、ＯＳスケジューラ操作を行い（ステップＳ１０６６）、負荷是正処理を終了する。
【０１００】
ＯＳスケジューラ操作の具体例としては、ＳＭＰ  ＯＳ２１４−１、ＳＭＰ  ＯＳ２１４−２のスケジューラ２１５−１、スケジューラ２１５−２によって、各スレッドの退避処理等を行う。また、マルチコアプロセッサシステム１００がユーザに問い合わせを行うことができるのであれば、ＳＭＰ  ＯＳ２１４−１、ＳＭＰ  ＯＳ２１４−２は、終了候補となるスレッドの一覧を表示し、ユーザに選択させてもよい。
【０１０１】
図１１は、性能乖離判断処理のフローチャートである。性能乖離判断処理はすべてのＣＰＵによって実行されるが、本実施の形態では、ＣＰＵＳ＃１によって実行される状態を例にあげて説明する。ＣＰＵＳ＃１は、プロファイル情報テーブル３０１より、運用前実行時間ｔ、デッドライン時間Ｄを取得する（ステップＳ１１０１）。続けて、ＣＰＵＳ＃１は、運用中の実効時間Ｔを取得する（ステップＳ１１０２）。運用中の実効時間Ｔの取得方法の具体例として、各ＣＰＵで実行されているスレッドは、自身がどの程度時間を経過したかを取得しながら動作することができる。各ＣＰＵは、スレッドが取得した経過時間を運用中の実効時間Ｔとして取得する。
【０１０２】
ｔとＴを用いて、ＣＰＵＳ＃１は、ｔ・（１＋τ）＜Ｔとなるかを判断する（ステップＳ１１０３）。なお、τは、システム化によるオーバーヘッドであり、ＯＳ動作やシステムプロセスなどによる性能劣化分である。具体的なτの値は、０．１である。ステップＳ１１０３の不等式が成立しないと判断された場合（ステップＳ１１０３：Ｎｏ）、ＣＰＵＳ＃１は続けて、Ｄ＜Ｔとなるかを判断する（ステップＳ１１０４）。
【０１０３】
ステップＳ１１０４の不等式が成立しないと判断された場合（ステップＳ１１０４：Ｎｏ）、ＣＰＵＳ＃１は、判断結果を、“乖離小”として出力し（ステップＳ１１０６）、性能乖離判断処理を終了する。ステップＳ１１０３、または、ステップＳ１１０４の不等式のいずれかが成立したと判断された場合（ステップＳ１１０３：Ｙｅｓ、ステップＳ１１０４：Ｙｅｓ）、ＣＰＵＳ＃１は、判断結果を、“乖離大”として出力し（ステップＳ１１０５）、性能乖離判断処理を終了する。
【０１０４】
また、動画再生スレッドなどは、通常１フレームで処理が終わらず、共用メモリ２０３に存在するバッファ量に応じた処理を行う。したがって、ＣＰＵＳ＃１は、バッファ量を考慮して性能が乖離したかを判断してもよい。たとえば、バッファ量が１０フレーム分存在する場合、１フレーム分の処理にてＣＰＵＳ＃１が“乖離大”と判断しても、１０フレーム分合計で予測時間の１０倍の値を超えなければ、処理性能の仕様を準拠できる。この場合、ＣＰＵＳ＃１は、“乖離小”として出力してもよい。
【０１０５】
図１２は、応答性能計測処理のフローチャートである。応答性能計測処理はすべてのＣＰＵによって実行されるが、本実施の形態では、ＣＰＵＳ＃１によって実行される状態を例にあげて説明する。ＣＰＵＳ＃１は、共用メモリ２０３にアクセスし、応答時間から、測定応答性能ｒを計測する（ステップＳ１２０１）。計測後、ＣＰＵＳ＃１は、応答性能劣化比Ｒ＝ｒ／ｐを算出し（ステップＳ１２０２）、応答性能計測処理を終了する。
【０１０６】
図１３は、負荷状態判定処理のフローチャートである。負荷状態判定処理は、集約処理にて特定されたＣＰＵで実行されるため、どのＣＰＵでも実行される可能性がある。ここでは、図１０の例とあわせて、ＣＰＵＬ＃３が負荷状態判定処理を実行する状態を想定する。
【０１０７】
ＣＰＵＬ＃３は、応答性能劣化比Ｒの平均値Ｒａｖｅ＝（１／ＣＮＴ）×ΣＲｎを算出する（ステップＳ１３０１）。ここでＣＮＴは、ＣＰＵｓ１０１の合計の個数であり、具体的には、ＣＰＵＳ＃１〜ＣＰＵＳ＃Ｍと、ＣＰＵＬ＃１〜ＣＰＵＬ＃Ｎの合計の個数である。ΣＲｎは、ＣＰＵＳ＃１〜ＣＰＵＳ＃Ｍと、ＣＰＵＬ＃１〜ＣＰＵＬ＃Ｎの応答性能劣化比Ｒの総和である。続けて、ＣＰＵＬ＃３は、応答性能劣化比Ｒの標準偏差σを、σ＝（（１／ＣＮＴ）×Σ（Ｒａｖｅ−Ｒｎ）＾２）＾０．５にて算出する（ステップＳ１３０２）。
【０１０８】
標準偏差σ算出後、ＣＰＵＬ＃３は、σ＞Δを判断する（ステップＳ１３０３）。Δは、所定の誤差である。σ＞Δであると判断された場合（ステップＳ１３０３：Ｙｅｓ）、ＣＰＵＬ＃３は、負荷状態を“不均衡”として出力し（ステップＳ１３０４）、負荷状態判定処理を終了する。σ＞Δでないと判断された場合（ステップＳ１３０３：Ｎｏ）、ＣＰＵＬ＃３は、負荷状態を“均衡”として出力し（ステップＳ１３０５）、負荷状態判定処理を終了する。
【０１０９】
図１４は、性能劣化原因判断処理のフローチャートである。性能劣化原因判断処理も図１０の例とあわせて、ＣＰＵＬ＃３が負荷状態判定処理を実行する状態を想定する。ＣＰＵＬ＃３は、変数ｉを用意し、ｉ＝１に設定する（ステップＳ１４０１）。続けて、ＣＰＵＬ＃３は、ＣＮＴ個のＣＰＵのうち、ｉ番目のＣＰＵを選択する（ステップＳ１４０２）。選択後、ＣＰＵＬ＃３は、選択したｉ番目のＣＰＵの応答性能劣化比Ｒｉ＜Ｒｂｏｒｄｅｒが成り立つかを判断する（ステップＳ１４０３）。
【０１１０】
ここで、Ｒｂｏｒｄｅｒは、選択されたＣＰＵが高負荷か否かを判断する閾値である。たとえば、Ｒｂｏｒｄｅｒ＝１とすると、ＣＰＵＬ＃３は、少しでも性能劣化したＣＰＵを高負荷として判断することになる。また、通常応答性能劣化比Ｒは、０．３〜０．８の範囲となるため、Ｒｂｏｒｄｅｒ＝０．８としてもよい。
【０１１１】
ＲｉがＲｂｏｒｄｅｒより小さいと判断された場合（ステップＳ１４０３：Ｙｅｓ）、ＣＰＵＬ＃３は続けて、ＣＮＴ番目のＣＰＵを選択したかを判断する（ステップＳ１４０４）。ＣＮＴ番目のＣＰＵを選択していないと判断された場合（ステップＳ１４０４：Ｎｏ）、ＣＰＵＬ＃３は、変数ｉをインクリメントし（ステップＳ１４０５）、ステップＳ１４０２の処理に移行する。
【０１１２】
ＣＮＴ番目のＣＰＵを選択していると判断された場合（ステップＳ１４０４：Ｙｅｓ）、ＣＰＵＬ＃３は、性能劣化原因を“高負荷による性能劣化”であると判断し（ステップＳ１４０６）、性能劣化原因判断処理を終了する。ＲｉがＲｂｏｒｄｅｒ以上であると判断された場合（ステップＳ１４０３：Ｎｏ）、ＣＰＵＬ＃３は、性能劣化原因を、“競合による性能劣化”であると判断し（ステップＳ１４０７）、性能劣化原因判断処理を終了する。
【０１１３】
図１５は、負荷是正処理のフローチャートである。負荷是正処理も図１０の例とあわせて、ＣＰＵＬ＃３が負荷状態判定処理を実行する状態を想定する。ＣＰＵＬ＃３は、変数ｉを用意し、ｉ＝１に設定する（ステップＳ１５０１）。続けて、ＣＰＵＬ＃３は、ＣＮＴ個のＣＰＵのうち、ｉ番目のＣＰＵを選択する（ステップＳ１５０２）。選択後、ＣＰＵＬ＃３は、選択したｉ番目のＣＰＵによる共用メモリ２０３へのアクセス権の比率を（（ΣＲｎ）−Ｒｉ）／（（ＣＮＴ−１）・（ΣＲｎ））に設定する（ステップＳ１５０３）。
【０１１４】
設定後、ＣＰＵＬ＃３は、ＣＮＴ番目のＣＰＵを選択したかを判断する（ステップＳ１５０４）。ＣＮＴ番目のＣＰＵを選択していないと判断された場合（ステップＳ１５０４：Ｎｏ）、ＣＰＵＬ＃３は、変数ｉをインクリメントし（ステップＳ１５０５）、ステップＳ１５０２の処理に移行する。ＣＮＴ番目のＣＰＵを選択したと判断された場合（ステップＳ１５０４：Ｙｅｓ）、ＣＰＵＬ＃３は１〜ＣＮＴ番目のＣＰＵによる共用メモリ２０３へのアクセス権の比率を調停回路２０４に通知し（ステップＳ１５０６）、負荷是正処理を終了する。
【０１１５】
以上説明したように、マルチコアプロセッサシステム、調停回路制御方法、制御方法、および調停回路制御プログラムによれば、共用メモリへのアクセス速度の実測値と理論値から応答性能を算出する。算出された応答性能から、低応答性能となるＣＰＵの共用メモリへのアクセスが多くなるように複数のＣＰＵによるアクセス権の比率を算出し、調停回路に通知する。これにより、マルチコアプロセッサシステムの各ＣＰＵの負荷のバランスを是正することができる。特に、ヘテロジニアス・マルチコアでは各ＣＰＵの負荷がアンバランスとなりやすく、本実施の形態にかかるマルチコアプロセッサシステムでは、ＣＰＵのリソースを有効に活用することができる。
【０１１６】
また、マルチコアプロセッサシステムは、ＣＰＵごとの応答性能に基づいて、ＣＰＵごとの応答性能のばらつき値を算出し、応答性能のばらつき値が所定の値より大きいときに、複数のＣＰＵによるアクセス権の比率を算出してもよい。これにより、高負荷のＣＰＵと低負荷のＣＰＵが混在し、負荷是正による効果が大きいときには、アクセス権の比率を算出することで、各ＣＰＵの負荷のバランスを是正することができる。また、各ＣＰＵの負荷がほぼ均衡であり、負荷是正による効果が小さいときにはアクセス権の比率を算出せず、ＣＰＵに対し負荷是正処理分の負荷を減らすことができる。
【０１１７】
また、マルチコアプロセッサシステムは、コアごとの応答性能のうち、少なくとも１つのコアの応答性能が所定の閾値以上である場合に、アクセス権の比率を算出してもよい。これにより、高負荷のＣＰＵと低負荷のＣＰＵが混在しており、負荷是正による効果が大きいときにアクセス権の比率を算出することで、各ＣＰＵの負荷のバランスを是正することができる。すべてのＣＰＵが高負荷であり、負荷是正による効果が小さいときにはアクセス権の比率を算出せず、ＣＰＵに対し負荷是正処理分の負荷を減らすことができる。
【０１１８】
また、マルチコアプロセッサシステムは、ＣＰＵに割り当てられたソフトウェアにて実行中の処理に応じた予測時間をデータベースより検索し、予測時間内に終了しないソフトウェアが検出された場合に、アクセス権の比率を算出してもよい。これにより、各ＣＰＵの負荷のアンバランスを要因としたソフトウェアの処理性能に問題が発生したときに、各ＣＰＵの負荷のバランスを是正し、ソフトウェアの処理性能の問題を解決することができる。
【０１１９】
また、マルチコアプロセッサシステムは、ＣＰＵごとの応答性能に基づいて、複数のコアのうち応答性能が最も大きいコアにて、アクセス権の比率を算出してもよい。これにより、最も低負荷であるＣＰＵにてアクセス権の比率を算出することになり、調停回路制御処理により発生する負荷においても、各ＣＰＵの負荷のバランスを保つことができる。
【０１２０】
なお、本実施の形態で説明した調停回路制御方法および制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本調停回路制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本調停回路制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【０１２１】
Ｓ＃１  ＣＰＵ
Ｓ＃２  ＣＰＵ
Ｌ＃１  ＣＰＵ
Ｌ＃２  ＣＰＵ
Ｌ＃３  ＣＰＵ
１１０  バス
２０３  共用メモリ
２０４  調停回路
３０１  プロファイル情報テーブル
３０２  検索部
３０３  検出部
３０４  取得部
３０５  応答性能算出部
３０６  集約部
３０７  特定部
３０８  応答性能ばらつき値算出部
３０９  判断部
３１０  アクセス比率算出部
３１１  通知部
【図１】
0005541355.tif 000002
【図２】
0005541355.tif 000003
【図３】
0005541355.tif 000004
【図４】
0005541355.tif 000005
【図５】
0005541355.tif 000006
【図６】
0005541355.tif 000007
【図７】
0005541355.tif 000008
【図８】
0005541355.tif 000009
【図９】
0005541355.tif 000010
【図１０Ａ】
0005541355.tif 000011
【図１０Ｂ】
0005541355.tif 000012
【図１１】
0005541355.tif 000013
【図１２】
0005541355.tif 000014
【図１３】
0005541355.tif 000015
【図１４】
0005541355.tif 000016
【図１５】
0005541355.tif 000017