(57)【特許請求の範囲】
【請求項１】
複数のコアと、
前記複数のコアとデータ通信する共有メモリと、
前記複数のコアから前記共有メモリへのアクセスを調停する調停回路を有し、前記複数のコアのうちの一のコアは、
前記複数のコアのいずれかにおけるアプリケーションの切り替えまたは割り当てを検出した場合に、前記共有メモリに記憶された前記アプリケーションの実行優先度および前記共有メモリへのアクセス回数に関する情報を読み出し、読み出した前記実行優先度および前記アクセス回数に基づき算出した、前記アプリケーションの前記共有メモリへのアクセス比率を前記調停回路へ通知し、
前記調停回路は、前記複数のコアのいずれか一つから通知された前記アクセス比率に基づき、前記複数のコアから前記共有メモリへのアクセスを調停する
マルチコアプロセッサシステム。
【請求項２】
複数のコアから前記複数のコアとデータ通信する共有メモリへのアクセスをアクセス比率に基づき調停する調停回路を制御する前記複数のコアのうちの一のコアに、
前記複数のコアのいずれかにおけるアプリケーションの切り替えまたは割り当てを検出した場合に、前記共有メモリに記憶された前記アプリケーションの実行優先度および前記共有メモリへのアクセス回数に関する情報を読み出し、読み出した前記実行優先度および前記アクセス回数に基づき算出した、前記アプリケーションの前記共有メモリへのアクセス比率を前記調停回路へ通知する処理を実行させる、
ことを特徴とする制御プログラム。
【請求項３】
複数のコアから前記複数のコアとデータ通信する共有メモリへのアクセスをアクセス比率に基づき調停する調停回路を制御する前記複数のコアのうちの一のコアが、
前記複数のコアのいずれかにおけるアプリケーションの切り替えまたは割り当てを検出した場合に、前記共有メモリに記憶された前記アプリケーションの実行優先度および前記共有メモリへのアクセス回数に関する情報を読み出し、読み出した前記実行優先度および前記アクセス回数に基づき算出した、前記アプリケーションの前記共有メモリへのアクセス比率を前記調停回路へ通知する処理を実行する、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサが共有する共有資源へのアクセスを調停する調停回路を制御するマルチコアプロセッサシステム、制御プログラム、および制御方法に関する。
【背景技術】
【０００２】
従来、物理的なメモリが１つであり、全ＣＰＵがバスなどを介して当該メモリ（以下、「共有メモリ」と称する。）に接続される共有メモリ型のマルチコアプロセッサ（以下、マルチコアプロセッサシステムと称する。）が知られている。マルチコアプロセッサシステムにおいて、メインＯＳがスケジューラにより各ＣＰＵに割り当てるアプリケーションソフトウェア（以下、「アプリケーション」と称する。）を決定していた（たとえば、下記特許文献１〜４参照。）。
【０００３】
共有メモリ型のマルチコアプロセッサシステムでは、各ＣＰＵが共有メモリに対してアクセスするためにアクセスの競合が発生してしまう。そこで、マルチコアプロセッサシステムには、アクセスの競合を防止するために各ＣＰＵからのアクセスを調停する調停回路が備えられている。
【０００４】
アクセスの調停方式は、ラウンドロビン方式と重み付けラウンドロビン方式と優先度制御方式との３つの方式が知られている。調停回路はアクセス要求が登録されているリクエストバッファから順にアクセス要求を取り出し、該アクセス要求を許可する。調停回路は、該３つの方式から任意の方式によってアクセス比率が定められ、アクセス比率に応じてリクエストバッファへの登録順を制御することでアクセス要求を調停していた。アクセス比率とは、各コアに与えるアクセス時間の比率である。ここでは、理解の容易化のために、各アクセス要求の必要アクセス時間をすべて同一の時間として説明する。
【０００５】
ここでは、一のＣＰＵに割り当てられたアプリＡ（アプリケーションＡ）のアクセス要求と一のＣＰＵと異なる他のＣＰＵに割り当てられたアプリＢ（アプリケーションＢ）のアクセス要求とが調停回路へ通知される場合を例に挙げて３つの方式を詳細に説明する。
【０００６】
まず、ラウンドロビン方式では、各プロセッサコアのアクセス時間であるタイムスライスが設定されており、各プロセッサコアに均等に共有資源へのアクセス権を与える方式である。たとえば、アプリＡとアプリＢのアクセス比率を１対１とし、タイムスライスが各アクセス要求の必要アクセス時間であるとすると、アプリＡのアクセス要求とアプリＢのアクセス要求がリクエストバッファへ交互に登録される。また、アプリＡとアプリＢのアクセス比率とは、アプリＡが割り当てられているＣＰＵに与えるアクセス権のアクセス時間とアプリＢが割り当てられているＣＰＵに与えるアクセス権のアクセス時間との比率である。
【０００７】
つぎに、重み付けラウンドロビン方式では、アプリＡとアプリＢのアクセス比率をアプリＡの優先度対アプリＢの優先度とする。たとえば、アプリＡの優先度が９０であり、アプリＢの優先度が８０である場合、アプリＡとアプリＢのアクセス比率は９対８である。タイムスライスが各アクセス要求の必要アクセス時間であるとすると、アプリＡのアクセス要求が９つ登録される都度、アプリＢのアクセス要求が８つ登録される。
【０００８】
最後に、優先度制御方法では、アプリＡの優先度がアプリＢの優先度以上の場合、アプリＡとアプリＢのアクセス比率をリクエストバッファがアクセス要求を登録可能な最大登録数対１とする。ここでは、最大登録数を９とする。ここでは、上述のようにリクエストバッファが９つのアクセス要求が登録可能であり、タイムスライスが各アクセス要求の必要アクセス時間であるとすると、アプリＡのアクセス要求が９つ登録される都度、アプリＢのアクセス要求が１つ登録される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００３−６１７０号公報
【特許文献２】特開平１０−２４０６９８号公報
【特許文献３】特開平８−１５３０２３号公報
【特許文献４】特開２００７−１８２６８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、どのアプリケーションが割り当てられているかの組み合わせによって３つの調停方式のどの調停方式が最適であるかが変化するが、調停回路では調停方式は上述の３つの方式のうちいずれか一つの方式に固定されている。ラウンドロビン方式であれば、もし優先度が高いアプリケーションと優先度が低いアプリケーションとがＣＰＵに割り当てられていた場合、アクセス比率が１対１で固定であるため、優先度が高いアプリケーションのアクセスを優先させることができないという問題点があった。
【００１１】
また、優先度制御方式であれば、優先度が高いアプリケーションのアクセスを早期に終了させることができるが、優先度が低いアプリケーションはアクセス要求が許可されるまで待機しなければならなかった。すなわち、優先度が低いアプリケーションの共有資源へのアクセス回数が多いとアクセス待ちの時間が増加し、優先度が低いアプリケーションの処理が遅くなる問題点があった。
【００１２】
また、重み付けラウンドロビン方式であれば、優先度が同一の２つのアプリケーションであっても、一方のアプリケーションはアクセス回数が多く、他方のアプリケーションはアクセス回数が少ないと、一方のアプリケーションが待機する時間が増加し、一方のアプリケーションの処理が遅くなる問題点があった。
【００１３】
すなわち、調停回路ではアクセス比率が固定されているため、各ＣＰＵに割り当てられたアプリケーションの組み合わせによって、該アクセス比率に応じた問題点が生じていた。
【００１４】
本発明は、上述した従来技術による問題点を解消するため、最適なアクセス比率によりマルチコアプロセッサから共有資源へのアクセスを調停回路に調停させることができるマルチコアプロセッサシステム、制御プログラム、および制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本実施形態の一態様として、複数のコアのいずれかにおけるアプリケーションの切り替えまたは割り当てを検出した場合に、複数のコアとデータ通信する共有メモリに記憶された前記アプリケーションの実行優先度および前記共有メモリへのアクセス回数に関する情報を読み出し、読み出した前記実行優先度および前記アクセス回数に基づき算出した、前記アプリケーションの前記共有メモリへのアクセス比率を、前記複数のコアから前記共有メモリへのアクセスをアクセス比率に基づき調停する調停回路へ通知するマルチコアプロセッサシステム、制御プログラム、および制御方法を提供する。
【発明の効果】
【００１６】
開示のマルチコアプロセッサシステム、制御プログラム、および制御方法によれば、最適なアクセス比率によりマルチコアプロセッサから共有資源へのアクセスを調停回路に調停させることができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。
【図２】図２は、アプリ情報群１２１の一例を示す説明図である。
【図３】図３は、本実施の形態にかかるマルチコアプロセッサシステム１００の機能的構成を示すブロック図である。
【図４】図４は、ＣＰＵ＃０にアプリＡがディスパッチされた例を示す説明図である。
【図５】図５は、ＣＰＵ＃１にアプリＢがディスパッチされた例を示す説明図である。
【図６】図６は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その１）である。
【図７】図７は、ＣＰＵ＃２にアプリＣがディスパッチされた例を示す説明図である。
【図８】図８は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その２）である。
【図９】図９は、ＣＰＵ＃１でアプリＢからアプリＤにタスクスイッチが発生した例を示す説明図である。
【図１０】図１０は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その３）である。
【図１１】図１１は、ＣＰＵ＃０でアプリＡからアプリＥへのタスクスイッチが発生した例を示す説明図である。
【図１２】図１２は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その４）である。
【図１３】図１３は、ＣＰＵ＃０でアプリＥからアプリＧへのタスクスイッチおよびＣＰＵ＃２でアプリＣからアプリＦへのタスクスイッチが発生した例を示す説明図である。
【図１４】図１４は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その５）である。
【図１５】図１５は、マルチコアプロセッサでの制御処理手順を示すフローチャート（その１）である。
【図１６】図１６は、マルチコアプロセッサでの制御処理手順を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１８】
以下に添付図面を参照して、本発明によるマルチコアプロセッサシステム、制御プログラム、および制御方法の好適な実施の形態を詳細に説明する。
【００１９】
（マルチコアプロセッサシステムのハードウェア構成）
図１は、実施の形態にかかるマルチコアプロセッサシステムのハードウェア構成を示すブロック図である。図１において、マルチコアプロセッサシステム１００は、ＣＰＵ＃０〜ＣＰＵ＃２と調停回路１０２と共有メモリ１０３とを備えている。また、ＣＰＵ＃０〜ＣＰＵ＃２と調停回路１０２は、バス１０１によってそれぞれ接続され、共有メモリ１０３は調停回路１０２を介してＣＰＵ＃０〜ＣＰＵ＃２とそれぞれ接続されている。
【００２０】
ここで、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
【００２１】
ＣＰＵ＃０〜ＣＰＵ＃２は、それぞれレジスタやキャッシュを備えている。ＣＰＵ＃０は、ＯＳ１１１を実行し、マルチコアプロセッサシステム１００の全体の制御を司る。ＣＰＵ＃１〜ＣＰＵ＃２は、それぞれＯＳ１１２とＯＳ１１３を実行し、ＯＳ１１１に割り当てられたアプリケーション（またはプロセス）を実行する。ＯＳ１１１は、マスタＯＳであり、アプリケーションの割り当てを制御するスケジューラ１１４と調停回路１０２を制御する制御プログラムを備えている。ＯＳ１１２とＯＳ１１３はスレーブＯＳである。
【００２２】
調停回路１０２は、ＣＰＵ＃０〜ＣＰＵ＃２から共有メモリ１０３へのアクセスを調停する回路である。具体的には、調停回路１０２は、ＣＰＵ＃０〜ＣＰＵ＃２のそれぞれに割り当てられているアプリケーションからのアクセス要求をリクエストバッファへ登録し、リクエストバッファに登録されている順にアクセス要求を取り出し、取り出したアクセス要求を許可する。
【００２３】
そして、共有メモリ１０３は、マルチコアプロセッサに共有されるメモリであり、アプリ情報群１２１やプロセステーブル１２２やＯＳ１１１〜ＯＳ１１３などのプログラムを記憶している。共有メモリ１０３は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、フラッシュＲＯＭなどを備えている。
【００２４】
たとえば、ＲＯＭが、該プログラムなどを記憶し、ＲＡＭは、ＣＰＵ＃０〜ＣＰＵ＃２のワークエリアとして使用される。共有メモリ１０３に記憶されているプログラムは、各ＣＰＵにロードされることで、コーディングされている処理をＣＰＵに実行させることとなる。本実施の形態では、調停回路１０２を制御する制御プログラムがＯＳ１１１に備えられており、ＣＰＵ＃０がＯＳ１１１をロードしてコーディングされている処理を実行するため、該制御プログラムにコーディングされている処理はＣＰＵ＃０が実行することとなる。また、本実施の形態ではＯＳ１１１が該制御プログラムを備えているが、これに限らず、ＯＳ１１２またはＯＳ１１３が備えていてもよい。
【００２５】
プロセステーブル１２２は、起動しているアプリケーション（またはプロセス）がどのＣＰＵに割り当てられているか、割り当てられているＣＰＵが該アプリケーションに関する処理を実行中であるか否かを示す情報である。各ＣＰＵは、プロセステーブル１２２を読み出して各ＣＰＵのキャッシュに記憶しておく。ＣＰＵ＃０はスケジューラ１１４によりアプリケーションを割り当てるとプロセステーブル１２２に登録する。各ＣＰＵはタスクスイッチが発生するとプロセステーブル１２２にどのアプリケーションが実行状態になったかを登録する。そして、各ＣＰＵは、プロセステーブル１２２を書き換えると、スヌープ処理を実行することで、全ＣＰＵのキャッシュに記憶されているプロセステーブル１２２を更新する。
【００２６】
ＣＰＵ＃０は、プロセステーブル１２２に変更があるか否かによってタスクディスパッチやタスクスイッチが発生したことを検出することができる。
【００２７】
アプリ情報群１２１は、アプリケーション群と各アプリケーションの実行に関する優先度と共有メモリ１０３へのアクセス回数とを示すタグ情報が付されている情報である。アプリ情報群１２１の詳細については後述する。
【００２８】
また、図示していないが、マルチコアプロセッサシステム１００では、Ｉ／Ｆ（ＩｎｔｅｒＦａｃｅ）やディスプレイやキーボードなどを備えている。Ｉ／Ｆは、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークに接続され、当該ネットワークを介して他の装置に接続される。そして、Ｉ／Ｆは、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆには、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２９】
ディスプレイは、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイは、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。キーボードは、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００３０】
（アプリ情報群１２１）
図２は、アプリ情報群１２１の一例を示す説明図である。アプリ情報群１２１では、アプリＡ〜アプリＧ（アプリケーションＧ）までのアプリケーションにタグ情報が付されている。タグ情報には実行に関する優先度と共有メモリ１０３へのアクセス回数が含まれている。
【００３１】
なお、共有資源へのアクセス回数は、アプリケーションの開発時にＥＳＬ（Ｅｌｅｃｔｒｏｎｉｃ  Ｓｙｓｔｅｍ  Ｌｅｖｅｌ）でシミュレーションを実施することにより得られる情報である。優先度は利用者が定める情報である。たとえば、通話やメールに関するアプリケーションは他のアプリケーションと比較して優先度が高い。
【００３２】
アプリＡのタグ情報２０１は優先度が９０であり、アクセス回数が９０である。アプリＢのタグ情報２０２では優先度が８０であり、アクセス回数が２０である。アプリＣ（アプリケーションＣ）のタグ情報２０３では優先度が４０であり、アクセス回数が８０である。アプリＤ（アプリケーションＤ）のタグ情報２０４では優先度が３０であり、アクセス回数が９０である。アプリＥ（アプリケーションＥ）のタグ情報２０５では優先度が２０であり、アクセス回数が１０である。アプリＦ（アプリケーションＦ）のタグ情報２０６では優先度が３０であり、アクセス回数が３０である。アプリＧのタグ情報２０７では優先度が３０であり、アクセス回数が９０である。
【００３３】
（マルチコアプロセッサシステム１００の機能的構成）
図３は、本実施の形態にかかるマルチコアプロセッサシステム１００の機能的構成を示すブロック図である。マルチコアプロセッサシステム１００は、検出部３０１と、取得部３０２と、特定部３０３と、比較部３０４と、決定部３０５と、通知部３０６と、を含む構成である。各機能（検出部３０１〜通知部３０６）は、具体的には、たとえば、図１に示した共有メモリ１０３に記憶された制御プログラムをＣＰＵ♯０に実行させることによりその機能を実現する。
【００３４】
検出部３０１は、マルチコアプロセッサにおいてアプリケーションのタスクスイッチまたはタスクディスパッチを検出する。タスクスイッチとは、周知のように各ＣＰＵが実行するアプリケーションを切り替える切り替え処理である。タスクディスパッチは、周知のようにスケジューラ１１４がアプリケーションをマルチコアプロセッサの各ＣＰＵに割り当てる割り当て処理である。
【００３５】
取得部３０２は、検出部３０１によりタスクスイッチまたはタスクディスパッチが検出された場合、マルチコアプロセッサのコアごとに割り当てられたアプリケーションの実行に関する優先度および共有メモリ１０３へのアクセス回数を取得する。
【００３６】
特定部３０３は、取得部３０２により優先度およびアクセス回数が取得されると、割り当てられたアプリケーションのうち取得部３０２により取得された優先度が最も高いアプリケーションを特定する。
【００３７】
比較部３０４は、割り当てられたアプリケーションのうち特定部３０３により特定された優先度が最も高いアプリケーションを除く残余のアプリケーションごとに取得部３０２により取得されたアクセス回数と特定されたアプリケーションのアクセス回数とを比較する。
【００３８】
決定部３０５は、残余のアプリケーションごとに残余のアプリケーションと最も高いアプリケーションとのアクセス比率を比較部３０４により比較された比較結果に基づいて決定する。
【００３９】
通知部３０６は、決定部３０５により決定されたアクセス比率を調停回路１０２へ通知する。
【００４０】
また、比較部３０４は、特定されたアプリケーションの優先度と残余のアプリケーションの優先度が等しいか否かを判断する。
【００４１】
決定部３０５は、比較部３０４により特定されたアプリケーションの優先度と残余のアプリケーションの優先度が等しいと判断され、かつ特定されたアプリケーションのアクセス回数と残余のアプリケーションのアクセス回数が等しいと判断された場合において、特定されたアプリケーションと残余のアプリケーションとのアクセス比率を１対１に決定する。そして、通知部３０６は、決定部３０５により決定されたアクセス比率を調停回路１０２へ通知する。
【００４２】
決定部３０５は、比較部３０４により特定されたアプリケーションの優先度と残余のアプリケーションの優先度が等しいと判断され、かつ特定されたアプリケーションのアクセス回数と残余のアプリケーションのアクセス回数が等しくないと判断された場合、特定されたアプリケーションと残余のアプリケーションとのアクセス比率を特定されたアプリケーションのアクセス回数対残余のアプリケーションのアクセス回数に決定する。そして、通知部３０６は、決定部３０５により決定されたアクセス比率を調停回路１０２へ通知する。
【００４３】
決定部３０５は、比較部３０４により特定されたアプリケーションの優先度と残余のアプリケーションの優先度が等しいと判断され、かつ特定されたアプリケーションのアクセス回数と残余のアプリケーションのアクセス回数が等しくないと判断された場合、特定されたアプリケーションと残余のアプリケーションとのアクセス比率を特定されたアプリケーションのアクセス回数対残余のアプリケーションのアクセス回数に決定する。そして、通知部３０６は、決定部３０５により決定されたアクセス比率を調停回路１０２へ通知する。
【００４４】
決定部３０５は、比較部３０４により特定されたアプリケーションの優先度と残余のアプリケーションの優先度が等しくないと判断され、かつ残余のアプリケーションのアクセス回数が特定されたアプリケーションのアクセス回数未満であると判断された場合、特定されたアプリケーションと残余のアプリケーションとのアクセス比率を所定数対１に決定する。ここで、所定数は、リクエストバッファがアクセス要求を登録可能な最大登録数である。そして、通知部３０６は、決定部３０５により決定されたアクセス比率を調停回路１０２へ通知する。
【００４５】
以上を踏まえて、本実施の形態にかかるマルチコアプロセッサでの制御処理について図を用いて実施例を説明する。まず、マルチコアプロセッサシステム１００の各ＣＰＵがＯＳを起動し、ＯＳの各処理の実行を開始すると、ＣＰＵ＃０が共有メモリ１０３にアクセスしてアプリ情報群１２１から各アプリケーションのタグ情報を取得し、取得したタグ情報をキャッシュに記憶する。
【００４６】
図４は、ＣＰＵ＃０にアプリＡがディスパッチされた例を示す説明図である。図４では、アプリＡがＣＰＵ＃０に割り当てられているが、他のＣＰＵには何も割り当てられていないため、ＣＰＵ＃０が、アプリＡのアクセス比率を１に決定し、決定したアクセス比率を調停回路１０２へ通知する。よって、アプリＡが調停回路１０２へアクセス要求を通知すると、調停回路１０２は受け付けたアクセス要求をリクエストバッファへ登録する。本実施の形態では、リクエストバッファのバッファ数は９とする。
【００４７】
図５は、ＣＰＵ＃１にアプリＢがディスパッチされた例を示す説明図である。アプリＢがＣＰＵ＃１にディスパッチされると、ＣＰＵ＃０は、該ディスパッチを検出し、マルチコアプロセッサの各ＣＰＵに割り当てられているアプリケーションを特定して実行アプリ群とする。ここでは、実行アプリ群が下記である。
【００４８】
・実行アプリ群：アプリＡ、アプリＢ
【００４９】
つぎに、ＣＰＵ＃０が、実行アプリ群内の各アプリケーションのタグ情報をキャッシュから取得し、優先度が高い順にソートして未決定キューに入れる。アプリＡの優先度が９０であり、アプリＢの優先度が８０である。未決定キューはアクセス比率が未決定なアプリケーションが登録されているキューであり、決定済アプリ群はアクセス比率が未決定なアプリケーションが登録されているバッファである。
【００５０】
・未決定キュー：アプリＡ→アプリＢ
・決定済アプリ群：φ
【００５１】
そして、ＣＰＵ＃０が、未決定キューから最も優先度が高いアプリケーションを取り出し、取り出したアプリケーションを未決定キューから削除し、取り出したアプリケーションを決定済アプリ群に登録する。ここでは、未決定キューからアプリＡが取り出され、決定済アプリ群に入れられる。
【００５２】
・未決定キュー：アプリＢ
・決定済アプリ群：アプリＡ
【００５３】
つぎに、ＣＰＵ＃０が未決定キューからアプリＢを取り出す。そして、ＣＰＵ＃０が、取り出したアプリＢの優先度と決定済アプリ群の最も優先度が高いアプリであるアプリＡの優先度とを比較して同一であるか否かを判断する。
【００５４】
アプリＢの優先度はアプリＡの優先度と同一でないと判断される。そして、ＣＰＵ＃０が、アプリＢのアクセス回数はアプリＡのアクセス回数以上であるか否かを判断する。アプリＢのアクセス回数が２０であり、アプリＡのアクセス回数が９０であるため、ＣＰＵ＃０が、アプリＢのアクセス回数はアプリＡのアクセス回数未満であると判断する。
【００５５】
そして、アプリＢのアクセス回数がアプリＡのアクセス回数未満であると判断されると、ＣＰＵ＃０が、アプリＡとアプリＢとのアクセス比率をリクエストバッファのバッファサイズ対１とする。リクエストバッファのバッファサイズが９であるため、ＣＰＵ＃０が、アプリＡが９に対してアプリＢが１に決定し、調停回路１０２へ決定したアクセス比率を通知する。すなわち、アプリＡとアプリＢとが優先度制御方式を用いて調停される。
【００５６】
図６は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その１）である。本実施の形態では、理解の容易化のために、各アクセス要求の必要アクセス時間がすべて同一時間であると仮定し、タイムスライスを該必要アクセス時間として説明する。調停回路１０２はアクセス比率の通知を受け付けると、リクエストバッファ６００にアプリＡのアクセス要求を９つ登録する。つぎに、アプリＡのアクセス要求が１つ終了すると、アプリＢのアクセス要求を１つ登録する。さらに、アプリＡのアクセス要求が１つ終了すると、アプリＡのアクセス要求を１つ登録する。したがって、アプリＡとアプリＢのアクセス比率が９対１であるとは、調停回路１０２がアプリＡのアクセス要求を９つ登録する都度、アプリＢのアクセス要求を１つ登録することである。
【００５７】
図７は、ＣＰＵ＃２にアプリＣがディスパッチされた例を示す説明図である。図１１では、アプリＣがＣＰＵ＃２にディスパッチされると、ＣＰＵ＃０は、該ディスパッチを検出し、マルチコアプロセッサの各ＣＰＵに割り当てられているアプリケーションを特定して実行アプリ群とする。ここでは、実行アプリ群が下記である。
【００５８】
・実行アプリ群：アプリＡ、アプリＢ、アプリＣ
【００５９】
つぎに、ＣＰＵ＃０が、実行アプリ群の各アプリケーションの優先度とアクセス回数を取得し、優先度が高い順にソートして未決定キューに入れる。すなわち、未決定キューの先頭に入っているアプリケーションが、優先度が最も高いアプリケーションである。
【００６０】
・未決定キュー：アプリＡ→アプリＢ→アプリＣ
・決定済アプリ群：φ
【００６１】
そして、ＣＰＵ＃０が、未決定キューから最も優先度が高いアプリケーションを取り出し、取り出したアプリケーションを未決定キューから削除する。ここでは、未決定キューからアプリＡが取り出され、決定済アプリ群に入れられる。
【００６２】
・未決定キュー：アプリＢ→アプリＣ
・決定済アプリ群：アプリＡ
【００６３】
つぎに、ＣＰＵ＃０が、未決定キューからアプリＢを取り出し、取り出したアプリＢを未決定キューから削除する。そして、ＣＰＵ＃０が、決定済アプリ群の中で最も優先度が高いアプリケーションを取り出す。アプリＡとアプリＢのアクセス比率は上述と同一で９対１であり、ＣＰＵ＃０が、調停回路１０２へアプリＡとアプリＢとのアクセス比率を通知する。
【００６４】
・未決定キュー：アプリＣ
・決定済アプリ群：アプリＡ、アプリＢ
【００６５】
つぎに、未決定キューからアプリＣが取り出され、アプリＣの優先度が決定済アプリ群のアプリＡの優先度と同一であるか否かが判断される。ここでは、アプリＣの優先度とアプリＡの優先度が同一でないと判断される。
【００６６】
そして、ＣＰＵ＃０が、アプリＡのアクセス回数とアプリＣのアクセス回数を比較して、アプリＣのアクセス回数がアプリＡのアクセス回数以上であるか否かを判断する。アプリＣのアクセス回数がアプリＡのアクセス回数未満であるため、アプリＡとアプリＣのアクセス比率は９対１に決定される。ＣＰＵ＃０が、調停回路１０２へアプリＡとアプリＣとのアクセス比率を通知し、決定済アプリ群にアプリＣを入れる。
【００６７】
・未決定キュー：φ
・決定済アプリ群：アプリＡ、アプリＢ、アプリＣ
【００６８】
未決定キューがφ（空）であるため、ＣＰＵ＃０は、各ＣＰＵに割り当てられたすべてのアプリのアクセス比率を決定したと判断する。
【００６９】
図８は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その２）である。調停回路１０２はアクセス比率の通知を受け付けると、リクエストバッファ６００にアプリＡのアクセス要求を９つ登録する。つぎに、アプリＡのアクセス要求が１つ終了すると、アプリＢのアクセス要求を１つ登録する。さらに、アプリＡのアクセス要求が１つ終了すると、アプリＣのアクセス要求を１つ登録する。
【００７０】
すなわち、アプリＡとアプリＢのアクセス比率が９対１であるため、リクエストバッファ６００へアプリＡのアクセス要求が９つ登録される都度、アプリＢのアクセス要求が１つ登録される。また、アプリＡとアプリＣのアクセス比率が９対１であるため、リクエストバッファ６００へアプリＡのアクセス要求が９つ登録される都度、アプリＣのアクセス要求を１つ登録される。
【００７１】
図９は、ＣＰＵ＃１でアプリＢからアプリＤにタスクスイッチが発生した例を示す説明図である。ＣＰＵ＃１にアプリＢが割り当てられていたが、タスクスイッチによりＣＰＵ＃１にアプリＤが割り当てられている。ＣＰＵ＃０が、該タスクスイッチを検出し、マルチコアプロセッサの各ＣＰＵに割り当てられているアプリケーションを特定して実行アプリ群とする。ここでは、実行アプリ群が下記である。
【００７２】
・実行アプリ群：アプリＡ、アプリＤ、アプリＣ
【００７３】
つぎに、ＣＰＵ＃０が、実行アプリ群の各アプリケーションの優先度とアクセス回数を取得し、優先度が高い順にソートして未決定キューに入れる。すなわち、未決定キューの先頭に入っているアプリが各ＣＰＵに割り当てられたアプリケーションの中で優先度が最も高いアプリケーションである。未決定キューは下記の様になる。
【００７４】
・未決定キュー：アプリＡ→アプリＣ→アプリＤ
・決定済アプリ群：φ
【００７５】
そして、ＣＰＵ＃０が、未決定キューの先頭からアプリを取り出し、取り出したアプリを未決定キューから削除する。ここでは、未決定キューからアプリＡが取り出され、決定済アプリ群に入れられる。
【００７６】
・未決定キュー：アプリＣ→アプリＤ
・決定済アプリ群：アプリＡ
【００７７】
つぎに、ＣＰＵ＃０が、未決定キューからアプリＣを取り出し、取り出したアプリを未決定キューから削除する。そして、ＣＰＵ＃０が、決定済アプリ群の中で最も優先度が高いアプリを取り出す。アプリＡとアプリＣのアクセス比率は上述と同一で９対１である。
【００７８】
・未決定キュー：アプリＤ
・決定済アプリ群：アプリＡ、アプリＣ
【００７９】
つぎに、未決定キューからアプリＤが取り出され、アプリＤの優先度が決定済アプリ群のアプリＡの優先度と同一であるか否かが判断される。ここでは、アプリＤの優先度とアプリＡの優先度が同一でないと判断される。
【００８０】
そして、ＣＰＵ＃０が、アプリＡのアクセス回数とアプリＤのアクセス回数とを比較して、アプリＤのアクセス回数がアプリＡのアクセス回数以上であるか否かを判断する。アプリＡのアクセス回数もアプリＤのアクセス回数も９０であるため、アプリＤのアクセス回数がアプリＡのアクセス回数以上であると判断される。そして、ＣＰＵ＃０が、アプリＡとアプリＤとのアクセス比率をアプリＡの優先度対アプリＤの優先度に決定する。すなわち、アプリＡとアプリＤとのアクセス比率が下記のように決定される。
【００８１】
・アプリＡとアプリＤとのアクセス比率＝９０：３０
＝３：１
【００８２】
ＣＰＵ＃０が、調停回路１０２へアプリＡとアプリＤとのアクセス比率を通知し、決定済アプリ群にアプリＤを入れる。
【００８３】
・未決定キュー：φ
・決定済アプリ群：アプリＡ、アプリＣ、アプリＤ
【００８４】
未決定キューがφ（空）であるため、ＣＰＵ＃０は、各ＣＰＵに割り当てられたすべてのアプリのアクセス比率を決定したと判断する。
【００８５】
図１０は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その３）である。調停回路１０２はアクセス比率の通知を受け付けると、調停回路１０２がアプリＡのアクセス要求をリクエストバッファ６００へ３つ登録すると、アプリＤのアクセス要求を１つ登録し、さらに、アプリＡのアクセス要求を３つ登録する。そして、アプリＤのアクセス要求を１つ登録し、調停回路１０２がアプリＡのアクセス要求を３つ登録するとアプリＡのアクセス要求がすでに９つ登録されているため、アプリＣのアクセス要求を１つ登録する。
【００８６】
すなわち、アプリＡとアプリＤのアクセス比率が３対１であるため、リクエストバッファ６００へアプリＡのアクセス要求が３つ登録される都度、アプリＤのアクセス要求が１つ登録される。また、アプリＡとアプリＣのアクセス比率が９対１であるため、リクエストバッファ６００へアプリＡのアクセス要求が９つ登録される都度、アプリＣのアクセス要求が１つ登録される。
【００８７】
図１１は、ＣＰＵ＃０でアプリＡからアプリＥへのタスクスイッチが発生した例を示す説明図である。ＣＰＵ＃０にアプリＡが割り当てられていたが、タスクスイッチによりＣＰＵ＃０にアプリＥが割り当てられている。ＣＰＵ＃０が、該タスクスイッチを検出し、マルチコアプロセッサの各ＣＰＵに割り当てられたアプリケーションを特定して実行アプリ群とする。ここでは、実行アプリ群が下記である。
【００８８】
・実行アプリ群：アプリＥ、アプリＤ、アプリＣ
【００８９】
つぎに、ＣＰＵ＃０が、実行アプリ群の各アプリケーションのタグ情報（優先度とアクセス回数）を取得し、優先度が高い順にソートして未決定キューに入れる。すなわち、未決定キューの先頭に入っているアプリが各ＣＰＵに割り当てられたアプリケーションの中で優先度が最も高いアプリケーションである。未決定キューは下記の様になる。
【００９０】
・未決定キュー：アプリＣ→アプリＤ→アプリＥ
・決定済アプリ群：φ
【００９１】
そして、ＣＰＵ＃０が、未決定キューの先頭からアプリを取り出し、取り出したアプリを未決定キューから削除し、取り出したアプリを決定済アプリ群に入れる。
【００９２】
・未決定キュー：アプリＤ→アプリＥ
・決定済アプリ群：アプリＣ
【００９３】
つぎに、ＣＰＵ＃０が、未決定キューから先頭のアプリＤを取り出し、取り出したアプリを未決定キューから削除する。そして、ＣＰＵ＃０が、決定済アプリ群の中で最も優先度が高いアプリであるアプリＣを取り出す。ＣＰＵ＃０が、アプリＣの優先度とアプリＤの優先度とを比較して等しいか否かを判断する。アプリＣの優先度とアプリＤの優先度は等しくないと判断される。
【００９４】
ＣＰＵ＃０が、アプリＤのアクセス回数がアプリＣのアクセス回数以上であるか否かを判断する。アプリＤのアクセス回数が９０であり、アプリＣのアクセス回数が８０であるため、アプリＤのアクセス回数がアプリＣのアクセス回数以上であると判断される。そして、アプリＤのアクセス回数がアプリＣのアクセス回数以上であると判断されると、ＣＰＵ＃０が、アプリＣとアプリＤとのアクセス比率をアプリＣの優先度対アプリＤの優先度に決定する。すなわち、アプリＣとアプリＤが重み付けラウンドロビン方式で制御され、アプリＣとアプリＤとのアクセス比率が下記のように決定される。
【００９５】
・アプリＣとアプリＤとのアクセス比率＝アプリＣの優先度：アプリＤの優先度
＝４０：３０
＝４：３
【００９６】
そして、ＣＰＵ＃０が、決定したアクセス比率を調停回路１０２へ通知し、アプリＤを決定済アプリ群に入れる。
【００９７】
・未決定キュー：アプリＥ
・決定済アプリ群：アプリＣ、アプリＤ
【００９８】
つぎに、ＣＰＵ＃０が、未決定キューが空でないため、未決定キューから先頭のアプリＥを取り出し、取り出したアプリＥを未決定キューから削除する。そして、ＣＰＵ＃０が、決定済アプリ群の中で最も優先度が高いアプリであるアプリＣを取り出す。ＣＰＵ＃０が、アプリＣの優先度とアプリＥの優先度とを比較して等しいか否かを判断する。ここでは、アプリＣの優先度とアプリＥの優先度は等しくないと判断される。
【００９９】
ＣＰＵ＃０が、アプリＥのアクセス回数がアプリＣのアクセス回数以上であるか否かを判断する。アプリＥのアクセス回数が１０であり、アプリＣのアクセス回数が８０であるため、アプリＥのアクセス回数がアプリＣのアクセス回数未満であると判断される。そして、アプリＤのアクセス回数がアプリＣのアクセス回数未満であると判断されると、ＣＰＵ＃０が、アプリＣとアプリＥとのアクセス比率を９対１に決定する。すなわち、優先度制御方式で制御される。ＣＰＵ＃０が、決定したアクセス比率を調停回路１０２へ通知し、アプリＥを決定済アプリ群に入れる。
【０１００】
・未決定キュー：φ
・決定済アプリ群：アプリＣ、アプリＤ、アプリＥ
【０１０１】
未決定キューがφ（空）であるため、ＣＰＵ＃０は、各ＣＰＵに割り当てられたすべてのアプリのアクセス比率を決定したと判断する。
【０１０２】
図１２は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その４）である。調停回路１０２はアクセス比率の通知を受け付けると、調停回路１０２がアプリＣのアクセス要求をリクエストバッファ６００へ４つ登録すると、アプリＤのアクセス要求を３つ登録し、さらに、アプリＣのアクセス要求を４つ登録する。そして、アプリＤのアクセス要求を３つ登録し、調停回路１０２がアプリＣのアクセス要求を１つ登録するとアプリＣのアクセス要求をすでに９つ登録しているため、アプリＥのアクセス要求を１つ登録する。
【０１０３】
すなわち、アプリＣとアプリＤのアクセス比率が４対３であるため、リクエストバッファ６００へアプリＣのアクセス要求が４つ登録される都度、アプリＤのアクセス要求が３つ登録される。アプリＣとアプリＥのアクセス比率が９対１であるため、リクエストバッファ６００へアプリＣのアクセス要求が９つ登録される都度、アプリＥのアクセス要求が１つ登録される。
【０１０４】
図１３は、ＣＰＵ＃０でアプリＥからアプリＧへのタスクスイッチおよびＣＰＵ＃２でアプリＣからアプリＦへのタスクスイッチが発生した例を示す説明図である。ＣＰＵ＃０にアプリＥが割り当てられていたが、タスクスイッチによりＣＰＵ＃０にアプリＧが割り当てられている。さらに、ＣＰＵ＃２にアプリＣが割り当てられていたが、タスクスイッチによりＣＰＵ＃２にアプリＦが割り当てられている。ＣＰＵ＃０が、２つのタスクスイッチを検出し、マルチコアプロセッサの各ＣＰＵに割り当てられたアプリケーションを特定して実行アプリ群とする。ここでは、実行アプリ群が下記である。
【０１０５】
・実行アプリ群：アプリＤ、アプリＦ、アプリＧ
【０１０６】
つぎに、ＣＰＵ＃０が、実行アプリ群の各アプリケーションのタグ情報（優先度とアクセス回数）を取得し、優先度が高い順にソートして未決定キューに入れる。
【０１０７】
・未決定キュー：アプリＤ→アプリＦ→アプリＧ
・決定済アプリ群：φ
【０１０８】
そして、ＣＰＵ＃０が、未決定キューの先頭からアプリＤを取り出し、取り出したアプリＤを未決定キューから削除し、取り出したアプリＤを決定済アプリ群に入れる。
【０１０９】
・未決定キュー：アプリＦ→アプリＧ
・決定済アプリ群：アプリＤ
【０１１０】
つぎに、ＣＰＵ＃０が、未決定キューから先頭のアプリＦを取り出し、取り出したアプリＦを未決定キューから削除する。そして、ＣＰＵ＃０が、決定済アプリ群の中で最も優先度が高いアプリＤを取り出す。ＣＰＵ＃０が、アプリＤの優先度とアプリＦの優先度とを比較して等しいか否かを判断する。アプリＤの優先度とアプリＦの優先度は等しいと判断される。
【０１１１】
ＣＰＵ＃０が、アプリＤのアクセス回数とアプリＦのアクセス回数が等しいか否かを判断する。アプリＤのアクセス回数が９０回であり、アプリＦのアクセス回数が３０回であるため、アプリＤのアクセス回数とアプリＦのアクセス回数が等しくないと判断される。そして、アプリＤのアクセス回数とアプリＦのアクセス回数が等しくないと判断されると、ＣＰＵ＃０が、アプリＤとアプリＦとのアクセス比率をアプリＤのアクセス回数対アプリＦのアクセス回数に決定する。すなわち、アプリＤとアプリＦが重み付けラウンドロビン方式で制御され、アプリＤとアプリＦとのアクセス比率が下記のように決定される。
【０１１２】
・アプリＤとアプリＦとのアクセス比率＝アプリＤのアクセス回数：アプリＦのアクセス回数
＝９０：３０
＝３：１
【０１１３】
そして、ＣＰＵ＃０が、決定したアクセス比率を調停回路１０２へ通知し、アプリＦを決定済アプリ群に入れる。
【０１１４】
・未決定キュー：アプリＧ
・決定済アプリ群：アプリＤ、アプリＦ
【０１１５】
つぎに、ＣＰＵ＃０が、未決定キューが空でないため、未決定キューから先頭のアプリＧを取り出し、取り出したアプリＧを未決定キューから削除する。そして、ＣＰＵ＃０が、決定済アプリ群の中で最も優先度が高いアプリであるアプリケーションを取り出す。ここでは、アプリＤの優先度とアプリＦの優先度は同一であるが、アプリＤが取り出されることとする。ＣＰＵ＃０が、アプリＤの優先度とアプリＧの優先度とを比較して等しいか否かを判断する。ここでは、アプリＤの優先度とアプリＧの優先度は等しいと判断される。
【０１１６】
ＣＰＵ＃０が、アプリＤのアクセス回数とアプリＧのアクセス回数が等しいか否かを判断する。アプリＤのアクセス回数が９０であり、アプリＧのアクセス回数が９０であるため、アプリＤのアクセス回数とアプリＧのアクセス回数が等しいと判断される。そして、アプリＤのアクセス回数とアプリＧのアクセス回数が等しいと判断されると、ＣＰＵ＃０が、アプリＤとアプリＧとのアクセス比率を１対１に決定する。すなわち、アプリＤとアプリＦがラウンドロビン方式で制御される。ＣＰＵ＃０が、決定したアクセス比率を調停回路１０２へ通知し、アプリＧを決定済アプリ群に入れる。
【０１１７】
・未決定キュー：φ
・決定済アプリ群：アプリＤ、アプリＦ、アプリＧ
【０１１８】
未決定キューがφ（空）であるため、ＣＰＵ＃０は、各ＣＰＵに割り当てられたすべてのアプリのアクセス比率を決定したと判断する。
【０１１９】
図１４は、アクセス比率に応じてマルチコアプロセッサから共有メモリ１０３へのアクセスを調停する例を示す説明図（その５）である。調停回路１０２はアクセス比率の通知を受け付けると、調停回路１０２がアプリＤのアクセス要求をリクエストバッファ６００へ１つ登録すると、アプリＧのアクセス要求を１つ登録し、さらに、アプリＤのアクセス要求を１つ登録する。そして、アプリＧのアクセス要求を１つ登録し、調停回路１０２がアプリＤのアクセス要求を１つ登録するとアプリＤのアクセス要求をすでに３つ登録しているため、アプリＦのアクセス要求を１つ登録する。
【０１２０】
すなわち、アプリＤとアプリＦのアクセス比率が３対１であるため、リクエストバッファ６００へアプリＤのアクセス要求が３つ登録される都度、アプリＦのアクセス要求が１つ登録される。また、アプリＤとアプリＧのアクセス比率が１対１であるため、リクエストバッファ６００へアプリＤのアクセス要求が１つ登録される都度、アプリＧのアクセス要求が１つ登録される。
【０１２１】
（マルチコアプロセッサでの制御処理手順）
図１５および図１６は、マルチコアプロセッサでの制御処理手順を示すフローチャートである。まず、ＣＰＵ＃０が、検出部３０１により、タスクディスパッチまたはタスクスイッチを検出したか否かを判断する（ステップＳ１５０１）。ＣＰＵ＃０が、タスクディスパッチまたはタスクスイッチを検出していないと判断した場合（ステップＳ１５０１：Ｎｏ）、ステップＳ１５０１へ戻る。
【０１２２】
一方、ＣＰＵ＃０が、タスクディスパッチまたはタスクスイッチを検出したと判断した場合（ステップＳ１５０１：Ｙｅｓ）、各ＣＰＵに割り当てられたアプリケーション（実行アプリ群）を特定する（ステップＳ１５０２）。つぎに、ＣＰＵ＃０が、特定したアプリケーションが一つか否かを判断する（ステップＳ１５０３）。
【０１２３】
ＣＰＵ＃０が、特定したアプリケーションが一つであると判断した場合（ステップＳ１５０３：Ｙｅｓ）、決定部３０５により、特定したアプリケーションのアクセス比率を１に決定する（ステップＳ１５０４）。特定したアプリケーションが１つしかないため、特定したアプリケーションのアクセス比率を１にするとは、特定したアプリケーションＡが割り当てられているＣＰＵにのみアクセス権を与えることを指す。そして、ＣＰＵ＃０が、通知部３０６により、決定したアクセス比率を調停回路へ通知する（ステップＳ１５０５）。
【０１２４】
つぎに、ＣＰＵ＃０が、特定したアプリケーションが一つでないと判断した場合（ステップＳ１５０３：Ｎｏ）、取得部３０２により、実行アプリ群の各アプリケーションの優先度およびアクセス回数を取得する（ステップＳ１５０６）。そして、ＣＰＵ＃０が、実行アプリ群を優先度の高い順にソートして未決定キューに挿入し（ステップＳ１５０７）、未決定キューから先頭に挿入されているアプリケーションを第１のアプリケーションとして取得する（ステップＳ１５０８）。つぎに、ＣＰＵ＃０が、未決定キューから第１のアプリケーションを削除する（ステップＳ１５０９）。
【０１２５】
つぎに、ＣＰＵ＃０が、決定済アプリ群が空か否かを判断する（ステップＳ１５１０）。ＣＰＵ＃０が、決定済アプリ群が空でないと判断した場合（ステップＳ１５１０：Ｎｏ）、特定部３０３により、決定済アプリ群から最も優先度の高いアプリを第２のアプリケーションとして特定する（ステップＳ１５１１）。そして、ＣＰＵ＃０が、比較部３０４により、第１のアプリケーションの優先度が第２のアプリケーションの優先度と等しいか否かを判断する（ステップＳ１５１２）。
【０１２６】
ＣＰＵ＃０が、第１のアプリケーションの優先度が第２のアプリケーションの優先度と等しくないと判断した場合（ステップＳ１５１２：Ｎｏ）、比較部３０４により、第１のアプリケーションのアクセス回数が第２のアプリケーションのアクセス回数以上かを判断する（ステップＳ１５１３）。ＣＰＵ＃０が、第１のアプリケーションのアクセス回数が第２のアプリケーションのアクセス回数以上でないと判断した場合（ステップＳ１５１３：Ｎｏ）、ステップＳ１５１５に移行する。一方、ＣＰＵ＃０が、第１のアプリケーションのアクセス回数が第２のアプリケーションのアクセス回数以上であると判断した場合（ステップＳ１５１３：Ｙｅｓ）、ステップＳ１５１６に移行する。
【０１２７】
ステップＳ１５１５において、ＣＰＵ＃０が、決定部３０５により、第２のアプリケーションと第１のアプリケーションとのアクセス比率を所定数対１に決定する（ステップＳ１５１５）。ステップＳ１５１６において、ＣＰＵ＃０が、決定部３０５により、第２のアプリケーションと第１のアプリケーションとのアクセス比率を第２のアプリケーションの優先度対第１のアプリケーションの優先度に決定する（ステップＳ１５１６）。
【０１２８】
一方、ステップＳ１５１２において、ＣＰＵ＃０が、第１のアプリケーションの優先度が第２のアプリケーションの優先度と等しいと判断した場合（ステップＳ１５１２：Ｙｅｓ）、ステップＳ１５１４に移行する。ステップＳ１５１４では、ＣＰＵ＃０が、比較部３０４により、第１のアプリケーションのアクセス回数が第２のアプリケーションのアクセス回数と等しいか否かを判断する（ステップＳ１５１４）。
【０１２９】
ＣＰＵ＃０が、第１のアプリケーションのアクセス回数が第２のアプリケーションのアクセス回数と等しいと判断した場合（ステップＳ１５１４：Ｙｅｓ）、ステップＳ１５１７へ移行する。一方、ＣＰＵ＃０が、第１のアプリケーションのアクセス回数が第２のアプリケーションのアクセス回数と等しくないと判断した場合（ステップＳ１５１４：Ｎｏ）、ステップＳ１５１８に移行する。
【０１３０】
ステップＳ１５１７において、ＣＰＵ＃０が、決定部３０５により、アプリケーションＡとアプリケーションＢとのアクセス比率を１対１に決定する（ステップＳ１５１７）。ステップＳ１５１８において、ＣＰＵ＃０が、決定部３０５により、アプリケーションＡとアプリケーションＢとのアクセス比率を第２のアプリケーションのアクセス回数対第１のアプリケーションのアクセス回数に決定する（ステップＳ１５１８）。
【０１３１】
ステップＳ１５１５、ステップＳ１５１６、ステップＳ１５１７、またはステップＳ１５１８のつぎに、ＣＰＵ＃０が、通知部３０６により、決定したアクセス比率を調停回路へ通知し（ステップＳ１５１９）、ステップＳ１５２０へ移行する。
【０１３２】
ステップＳ１５１９のつぎに、またはステップＳ１５１０において、ＣＰＵ＃０が、決定済アプリ群が空であると判断した場合（ステップＳ１５１０：Ｙｅｓ）、第１のアプリケーションを決定済アプリ群に登録する（ステップＳ１５２０）。そして、ＣＰＵ＃０が、未決定キューが空か否かを判断し（ステップＳ１５２１）、未決定キューが空であると判断した場合（ステップＳ１５２１：Ｙｅｓ）、決定済アプリ群を空に設定し（ステップＳ１５２４）、ステップＳ１５０１へ戻る。
【０１３３】
一方、ＣＰＵ＃０が、未決定キューが空でないと判断した場合（ステップＳ１５２１：Ｎｏ）、タスクディスパッチまたはタスクスイッチを検出したか否かを判断する（ステップＳ１５２２）。ＣＰＵ＃０が、タスクディスパッチまたはタスクスイッチを検出していないと判断した場合（ステップＳ１５２２：Ｎｏ）、ステップＳ１５０８へ戻る。一方、ＣＰＵ＃０が、タスクディスパッチまたはタスクスイッチを検出したと判断した場合（ステップＳ１５２２：Ｙｅｓ）、決定済アプリ群および未決定キューを空に設定し（ステップＳ１５２３）、ステップＳ１５０２へ戻る。
【０１３４】
以上説明したように、マルチコアプロセッサシステム、制御プログラム、および制御方法によれば、タスクスイッチまたはタスクディスパッチが検出される都度、各ＣＰＵに割り当てられたアプリケーションのうち最も優先度の高いアプリケーションを除く残余のアプリケーションと該最も優先度の高いアプリケーションとのアクセス比率とをアクセス回数に基づいて決定する。これにより、割り当てられたアプリケーションに沿って最適なアクセス比率でマルチコアプロセッサから共有資源へのアクセスを調停させることができる。
【０１３５】
また、アプリケーションの優先度およびアクセス回数が最も優先度の高いアプリケーションの優先度およびアクセス回数と等しい場合、最も優先度が高いアプリケーションと該アプリケーションとのアクセス比率を１対１に決定する。すなわち、最も優先度が高いアプリケーションと該アプリケーションとがラウンドロビン方式で制御される。これにより、共有資源へのアクセスが均等に許可され、各アプリケーションのアクセス待ちの時間が均一化され、アクセス待ち時間に起因してアプリケーションの処理が遅くなることを防止できる。
【０１３６】
また、アプリケーションの優先度が最も優先度の高いアプリケーションの優先度と等しく、該アプリケーションのアクセス回数が最も優先度の高いアプリケーションのアクセス回数と等しくない場合、最も優先度が高いアプリケーションのアクセス回数対該アプリケーションのアクセス回数をアクセス比率に決定する。すなわち、最も優先度が高いアプリケーションと該アプリケーションとがアクセス回数に基づく重み付けラウンドロビン方式で制御される。これにより、共有資源へのアクセス回数が多いアプリケーションのアクセス待ちの時間を減少させることで該アプリケーションの処理を高速化することができる。
【０１３７】
また、最も優先度の高いアプリケーションの優先度よりも優先度が低いアプリケーションにおいて、該アプリケーションのアクセス回数が最も優先度の高いアプリケーションのアクセス回数以上の場合、最も優先度の高いアプリケーションの優先度対該アプリケーションの優先度をアクセス比率に決定する。すなわち、最も優先度が高いアプリケーションと該アプリケーションとが優先度に基づく重み付けラウンドロビン方式で制御される。これにより、アクセス回数が多くかつ優先度が高いアプリケーションのアクセスを優先的に終了させることができ、アクセス待ちの時間を減少させることで、アクセス回数が多くかつ優先度が高いアプリケーションの処理を高速化することができる。
【０１３８】
また、最も優先度の高いアプリケーションの優先度よりも優先度が低いアプリケーションにおいて、該低いアプリケーションのアクセス回数が最も優先度の高いアプリケーションのアクセス回数未満の場合、最も優先度の高いアプリケーションと該低いアプリケーションとのアクセス比率を指定数対１に決定する。すなわち、最も優先度が高いアプリケーションと該アプリケーションとが優先度制御方式で制御される。これにより、優先度が高いアプリケーションのアクセスを優先的に終了させることができる。
【０１３９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１４０】
（付記１）マルチコアプロセッサにおいてアプリケーションの切り替え処理または割り当て処理を検出する検出手段と、
前記検出手段により前記切り替え処理または前記割り当て処理が検出された場合、前記マルチコアプロセッサの各コアに割り当てられたアプリケーションの実行に関する優先度および前記マルチコアプロセッサが共有する共有資源へのアクセス回数を取得する取得手段と、
前記割り当てられたアプリケーションのうち、前記取得手段により取得された優先度が最も高いアプリケーションを除く残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較することにより、前記優先度が最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を決定する決定手段と、
前記決定手段により決定されたアクセス比率を調停回路へ通知する通知手段と、
前記アクセス比率に基づいて、前記マルチコアプロセッサから前記共有資源へのアクセスを前記調停回路で調停する調停手段と、
を備えることを特徴とするマルチコアプロセッサシステム。
【０１４１】
（付記２）前記割り当てられたアプリケーションのうち、前記最も高いアプリケーションを除く残余のアプリケーションごとに前記残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較し、前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しいか否かを判断する比較手段と、を備え、
前記決定手段は、
前記比較手段により前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しいと判断され、かつ前記最も高いアプリケーションのアクセス回数と前記残余のアプリケーションのアクセス回数が等しいと判断された場合、前記最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を１対１に決定することを特徴とする付記１に記載のマルチコアプロセッサシステム。
【０１４２】
（付記３）前記割り当てられたアプリケーションのうち、前記最も高いアプリケーションを除く残余のアプリケーションごとに前記残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較し、前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しいか否かを判断する比較手段と、を備え、
前記決定手段は、
前記比較手段により前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しいと判断され、かつ前記最も高いアプリケーションのアクセス回数と前記残余のアプリケーションのアクセス回数が等しくないと判断された場合、前記最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を前記最も高いアプリケーションのアクセス回数対前記残余のアプリケーションのアクセス回数に決定することを特徴とする付記１に記載のマルチコアプロセッサシステム。
【０１４３】
（付記４）前記割り当てられたアプリケーションのうち、前記最も高いアプリケーションを除く残余のアプリケーションごとに前記残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較し、前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しいか否かを判断する比較手段と、を備え、
前記決定手段は、
前記比較手段により前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しくないと判断され、かつ前記残余のアプリケーションのアクセス回数が前記最も高いアプリケーションのアクセス回数以上であると判断された場合において、前記最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を前記最も高いアプリケーションの優先度対前記残余のアプリケーションの優先度に決定することを特徴とする付記１に記載のマルチコアプロセッサシステム。
【０１４４】
（付記５）前記割り当てられたアプリケーションのうち、前記最も高いアプリケーションを除く残余のアプリケーションごとに前記残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較し、前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しいか否かを判断する比較手段と、を備え、
前記決定手段は、
前記比較手段により前記最も高いアプリケーションの優先度と前記残余のアプリケーションの優先度が等しくないと判断され、かつ前記残余のアプリケーションのアクセス回数が前記最も高いアプリケーションのアクセス回数未満であると判断された場合、前記最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を所定数対１に決定することを特徴とする付記１に記載のマルチコアプロセッサシステム。
【０１４５】
（付記６）マルチコアプロセッサから該マルチコアプロセッサが共有する共有資源へのアクセスをアクセス比率に応じて調停する調停回路を制御する前記マルチコアプロセッサの一のコアに、
前記マルチコアプロセッサにおいてアプリケーションの切り替え処理または割り当て処理を検出する検出工程と、
前記検出工程により前記切り替え処理または前記割り当て処理が検出された場合、前記マルチコアプロセッサの各コアに割り当てられたアプリケーションの実行に関する優先度および前記共有資源へのアクセス回数を取得する取得工程と、
前記割り当てられたアプリケーションのうち、前記取得工程により取得された優先度が最も高いアプリケーションを除く残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較することにより、前記最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を決定する決定工程と、
前記決定工程により決定されたアクセス比率を前記調停回路へ通知する通知工程と、
を実行させることを特徴とする制御プログラム。
【０１４６】
（付記７）マルチコアプロセッサから該マルチコアプロセッサが共有する共有資源へのアクセスをアクセス比率に応じて調停する調停回路を制御する前記マルチコアプロセッサの一のコアが、
前記マルチコアプロセッサにおいてアプリケーションの切り替え処理または割り当て処理を検出する検出工程と、
前記検出工程により前記切り替え処理または前記割り当て処理が検出された場合、前記マルチコアプロセッサの各コアに割り当てられたアプリケーションの実行に関する優先度および前記共有資源へのアクセス回数を取得する取得工程と、
前記割り当てられたアプリケーションのうち、前記取得工程により取得された優先度が最も高いアプリケーションを除く残余のアプリケーションのアクセス回数と前記最も高いアプリケーションのアクセス回数とを比較することにより、前記最も高いアプリケーションと前記残余のアプリケーションとのアクセス比率を決定する決定工程と、
を実行することを特徴とする制御方法。
【符号の説明】
【０１４７】
１００  マルチコアプロセッサシステム
３０１  検出部
３０２  取得部
３０４  比較部
３０５  決定部
３０６  通知部
【図１】
0005605477.tif 000002
【図２】
0005605477.tif 000003
【図３】
0005605477.tif 000004
【図４】
0005605477.tif 000005
【図５】
0005605477.tif 000006
【図６】
0005605477.tif 000007
【図７】
0005605477.tif 000008
【図８】
0005605477.tif 000009
【図９】
0005605477.tif 000010
【図１０】
0005605477.tif 000011
【図１１】
0005605477.tif 000012
【図１２】
0005605477.tif 000013
【図１３】
0005605477.tif 000014
【図１４】
0005605477.tif 000015
【図１５】
0005605477.tif 000016
【図１６】
0005605477.tif 000017