(57)【特許請求の範囲】
【請求項１】
複数のコアプロセッサからなるマルチコアプロセッサにおいて、前記複数のコアプロセッサに内部バスにより複数のメモリを空間的に多重接続して任意のメモリをアクセスできるように構成し、前記メモリに前記複数のコアプロセッサが排他制御対象を制御することに使用されていることの使用状態を示すセマフォ管理テーブルを設け、各コアプロセッサ内における排他制御と、複数のコアプロセッサ間における排他制御と、全コアプロセッサ間における排他制御のそれぞれにセマフォＩＤを付与し、前記各コアプロセッサは前記セマフォＩＤにより識別した排他制御に切替えて前記セマフォ管理テーブルを監視し、排他制御対象へのアクセス割込みを排他することを特徴とするマルチコアプロセッサにおけるマルチコア制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサの制御方法に関し、特に各マルチコアプロセッサ間の排他制御機能を備えたマルチコアプロセッサにおけるマルチコア制御方法に関する。
【背景技術】
【０００２】
一般的なマイクロプロセッサ、即ちシングルコアプロセッサでは、パッケージの中に命令発行器や演算器などを組み合わせた１つの部品として動作するプロセッサコアが１セット入っている。これに対しマルチコアプロセッサには、上記プロセッサコアが複数個入っており、マイクロプロセッサを複数個搭載しているような状態になる。
【０００３】
従来、シングルコアプロセッサでは、マルチタスクＯＳを搭載することによってマルチタスク動作を実現し、動作周波数を高くすることによって処理能力を高め、リアルタイム性能を向上してきた。
【０００４】
上記のように動作周波数を高くしてプロセッサの能力を高める方法は、熱、消費電力の面で限界に近付きつつある。  
これに対し、マルチコアプロセッサの構成をとれば、動作周波数を高くすることなく処理能力を向上でき、熱、消費電力の面でシングルコアプロセッサより有利である（例えば、特許文献１参照。）。
【特許文献１】特開平５−３４２０２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のようにシングルコアプロセッサに代えてマルチコアプロセッサを使用することにより、動作周波数を高くすることなく処理能力を向上でき、熱、消費電力の面で有利であるが、メモリの排他、入出力リソースの排他、データの同一性保持が複雑になるというデメリットがある。
【０００６】
このためマルチコアプロセッサを最適な状態でマルチタスク動作させ、信号処理システムなどのリアルタイム要求に応えるよう動作させる技術が要望されている。
【０００７】
本発明は上記の課題を解決するためになされたもので、マルチコアプロセッサを用いて効率的なマルチタスク動作を行なわせることができ、時間応答性能の厳しい信号処理システムに等に適用することができるマルチコアプロセッサにおけるマルチコア制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、複数のコアプロセッサからなるマルチコアプロセッサにおいて、前記複数のコアプロセッサに内部バスにより複数のメモリを空間的に多重接続して任意のメモリをアクセスできるように構成し、前記メモリに前記複数のコアプロセッサが排他制御対象を制御することに使用されていることの使用状態を示すセマフォ管理テーブルを設け、各コアプロセッサ内における排他制御と、複数のコアプロセッサ間における排他制御と、全コアプロセッサ間における排他制御のそれぞれにセマフォＩＤを付与し、前記各コアプロセッサは前記セマフォＩＤにより識別した排他制御に切替えて前記セマフォ管理テーブルを監視し、排他制御対象へのアクセス割込みを排他することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、各コアプロセッサ内、各コアプロセッサ間、全コアプロセッサ間の排他制御にそれぞれセマフォＩＤを付与し、このセマフォＩＤにより識別した排他制御に切替えて排他制御対象へのアクセス割込みを排他することにより、マルチタスク処理を効率的に行なわせることができ、時間応答性能の厳しい信号処理システムに等に適用することが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して本発明の一実施形態を説明する。  
図１は、本発明の一実施形態に係るマルチコアプロセッサの構成を示すブロック図である。図１において、１１は第１のコアプロセッサ（コア０）、１２は第２のコアプロセッサ（コア１）、１３は第３のコアプロセッサ（コア２）で、Ｌ１メモリ２１〜２３がそれぞれ付属している。このＬ１メモリ２１〜２３の一部には、キャッシュメモリが配置される。また、上記コアプロセッサ１１〜１３は、シングルスタックのＯＳで動作するもので、その優先度は例えば「コア０＜コア１＜コア２」に設定される。
【００１１】
そして、上記コアプロセッサ１１〜１３は、内部バス１４及び外部バス１５に接続される。  
上記内部バス１４には、複数個例えば４個のＬ２メモリ（０）３１、Ｌ２メモリ（１）３２、Ｌ２メモリ（２）３３、Ｌ２メモリ（３）３４が接続される。また、上記Ｌ２メモリ３１〜３４には、セマフォ管理テーブルが設けられる。この場合、セマフォ管理テーブルは、Ｌ２メモリ３１〜３４の何れに配置しても良い。
【００１２】
上記コアプロセッサ１１〜１３とＬ２メモリ３１〜３４は、内部バス１４を空間的に多重接続しており、例えばコアプロセッサ１１がＬ２メモリ３１にアクセス中に、コアプロセッサ１２がＬ２メモリ３２に、コアプロセッサ（コア２）１３がＬ２メモリ（３）３４に同時にアクセス可能に接続されている。例えばＬ２メモリ３１〜３４のそれぞれにデータバスを３２本ずつ接続し、アドレスバスの上位ビットをチップセレクト信号に割り当ててアクセス対象を選択するように構成する。従って、コアプロセッサ１１〜１３は、Ｌ２メモリ３１〜３４の何れにもアクセス可能となっている。
【００１３】
また、上記外部バス１５には、ホスト（ＨＯＳＴ）プロセッサ４１，ＳＤＲＡＭ（Synchronous DRAM）４２及び通信デバイス４３が接続される。  
図２は、上記実施形態におけるマルチタスク構成例を示したものである。上記各コアプロセッサ１１〜１３は、それぞれ１つのタスク（Ｔａｓｋ ０、Ｔａｓｋ １、Ｔａｓｋ ２）と、複数のソフトウェア割込（ＳＷＩ ０、ＳＷＩ １）と、複数のハードウェア割込（ＨＷＩ）を備えると共に共通部５０としてライブラリ（Library）５１、ＩＰＬ（Initial Program Loader）５２、ＯＳ（Operating System）５３、ドライバ（Driver）５４を備えている。一般に１つのコアプロセッサでマルチタスクを実行する場合、タスクを切替える際にタスクコンテキスト（レジスタやスタック）を切替える必要がある。この実施形態では、上記したように各コアプロセッサ１１〜１３にそれぞれ１つのタスク（Ｔａｓｋ ０、Ｔａｓｋ １、Ｔａｓｋ ２）を割り当てることにより、同一のコアプロセッサ内ではタスクコンテキストの切替えを不要にしている。
【００１４】
上記共通部５０は、Ｌ２メモリ３１〜３４に格納され、Ｌ１メモリ２１〜２３の一部に配置するキャッシュメモリを介在してコアプロセッサ１１〜１３からアクセスされる。共通部５０をＬ２メモリ３１〜３４に配置することにより、容量の少ないＬ１メモリ２１〜２３を補っている。
【００１５】
上記コアプロセッサ１１〜１３は、コア内、コア間、全コア間の排他制御にセマフォＩＤを付与し、このセマフォＩＤを識別して排他制御処理を切替えている。
【００１６】
以下、上記コアプロセッサ１１〜１３におけるコア内、コア間、全コア間の排他制御処理について説明する。  
［コア内排他制御処理］
例えば関数の引数で各コアプロセッサ１１〜１３内のセマフォを指定するＩＤが付与されている場合は、図３に示すように排他制御対象６１へのアクセスを割込み禁止処理と割込み禁止解除処理で挟むことにより、排他制御対象６１へのアクセスを排他する。図３はコアプロセッサ１１内における排他制御処理を示したもので、ソフトウェア割込ＳＷＩ ０がソフトウェア割込ＳＷＩ １の起動の禁止／解除を管理している。
【００１７】
図３において、例えばタスクＴａｓｋ ０が排他制御対象６１をアクセスする場合、タスクＴａｓｋ ０は、先ずソフトウェア割込ＳＷＩ ０に対して割込み禁止を指示し（ステップＡ１）、その応答を待って排他制御対象６１にアクセスする（ステップＡ２）。このアクセス中にハードウェア割込みＨＷＩからソフトウェア割込みＳＷＩ ０にＳＷＩ １割込み要求が発生すると、この時点ではソフトウェア割込みＳＷＩ ０が割込み禁止状態にあるので、ハードウェア割込みＨＷＩによる割込み要求は受け付けられない。
【００１８】
その後、タスクＴａｓｋ ０が排他制御対象６１に対するアクセスを終了すると、タスクＴａｓｋ ０からソフトウェア割込ＳＷＩ ０に割込み禁止解除通知が送られ（ステップＡ３）、ソフトウェア割込ＳＷＩ ０の割込み禁止が解除される。これによりソフトウェア割込ＳＷＩ ０は、上記ハードウェア割込みＨＷＩからのＳＷＩ １割込み要求を受付け、ソフトウェア割込ＳＷＩ １に起動指令を出力する（ステップＡ４）。
【００１９】
ソフトウェア割込ＳＷＩ １は、上記起動指令によって起動し、排他制御対象６１に割込み禁止を指示し（ステップＡ５）、その応答を待って排他制御対象６１をアクセスする（ステップＡ６）。そして、ソフトウェア割込ＳＷＩ １は、排他制御対象６１に対するアクセスを終了すると、排他制御対象６１に割込み禁止解除を通知し（ステップＡ７）、その応答を待って排他制御対象６１に処理終了を通知する（ステップＡ８）。排他制御対象６１は、ソフトウェア割込ＳＷＩ １によるアクセスが終了したことをタスクＴａｓｋ ０に通知する（ステップＡ９）。  
上記のように各コアプロセッサ１１〜１３内において、排他制御対象６１に対するアクセスの排他制御処理が行なわれる。
【００２０】
［コア間排他制御処理］
また、コアプロセッサ１１〜１３において、２つのコア間のセマフォを指定するＩＤが指定されたときは、図４に示すようにＬ２メモリ３１〜３４に配置するセマフォ管理テーブル６２を各コアプロセッサ１１〜１３で監視することによって排他制御を実現する。図４は、コアプロセッサ１１、１２間における排他制御対象６１に対する排他制御を行なう場合について示したもので、セマフォ管理テーブル６２にはコア０状態エリア６２ａ、コア１状態エリア６２ｂが設けられている。
【００２１】
セマフォ管理テーブル６２のコア０状態エリア６２ａには、コアプロセッサ（コア０）１１が「使用中」であるか「空き」となっているかを書込み、コア１状態エリア６２ｂにはコアプロセッサ（コア１）１２が「使用中」であるか「空き」となっているかを書込んで管理する。
【００２２】
［コアプロセッサ１１の動作手順］
先ず、コアプロセッサ１１の動作手順について図５のフローチャートを参照して説明する。  
コアプロセッサ１１は、セマフォ管理テーブル６２のコア１状態エリア６２ｂからコアプロセッサ１２の使用状態を読出し（ステップＢ１）、「空き」であるか使用中であるかを判断する（ステップＢ２）。コアプロセッサ１２が空いている場合は、コア０状態エリア６２ａに「使用中」を書込み（ステップＢ３）、排他制御対象６１をアクセスする（ステップＢ４）。ステップＢ５では、上記排他制御対象６１に対する処理が終了したかどうかを判断し、排他制御対象６１へのアクセスが終了すると、コア０状態エリア６２ａに「空き」を書込み（ステップＢ６）、処理を終了する。
【００２３】
また、上記ステップＢ２で、コアプロセッサ１２が使用中であると判断された場合は、コアプロセッサ１２、即ち「コア１状態」が「空き」なるまでスピンロック（spin lock）で待つ（ステップＢ７）。そして、コアプロセッサ１２が「空き」になると、排他制御対象６１をアクセスする（ステップＢ８）。ステップＢ９では、上記排他制御対象６１に対する処理が終了したかどうかを判断し、排他制御対象６１へのアクセスが終了すると、コア０状態エリア６２ａに「空き」を書込み（ステップＢ１０）、処理を終了する。
【００２４】
［コアプロセッサ１２の動作手順］
次に、コアプロセッサ１２の動作手順について図６のフローチャートを参照して説明する。  
コアプロセッサ１２は、セマフォ管理テーブル６２のコア０状態エリア６２ａからコアプロセッサ１１の使用状態、即ち「コア０状態」を読出し（ステップＣ１）、「空き」であるか使用中であるかを判断する（ステップＣ２）。コアプロセッサ１１が空いている場合は、コア１状態エリア６２ｂに「使用中」を書込み（ステップＣ３）、排他制御対象６１をアクセスする（ステップＣ４）。ステップＣ５では、上記排他制御対象６１に対する処理が終了したかどうかを判断し、排他制御対象６１へのアクセスが終了すると、コア１状態エリア６２ｂに「空き」を書込み（ステップＣ６）、処理を終了する。
【００２５】
また、上記ステップＣ２で、コアプロセッサ１１が使用中であると判断された場合は、コアプロセッサ１１、即ち「コア０状態」が「空き」なるまでスピンロック（spin lock）で待つ（ステップＣ７）。そして、コアプロセッサ１１が「空き」になると、排他制御対象６１をアクセスする（ステップＣ８）。ステップＣ９では、上記排他制御対象６１に対する処理が終了したかどうかを判断し、排他制御対象６１へのアクセスが終了すると、コア１状態エリア６２ｂに「空き」を書込み（ステップＣ１０）、処理を終了する。
【００２６】
［全コア間排他制御処理］
次に全コア間の排他制御処理について説明する。  
コアプロセッサ１１〜１３において、全コア間のセマフォを指定するＩＤが指定されたときは、Ｌ２メモリ３１〜３４に配置する図７に示すセマフォ管理テーブル６３を各コアプロセッサ１１〜１３で監視することによって排他制御を実現する。ここで、上記したように各コアプロセッサ１１〜１３に
コア０＜コア１＜コア２
の優先度を与えることによって、優先度の高いコアの処理を優先的に短いオーバヘッドで行なう。
【００２７】
上記セマフォ管理テーブル６３は、図７に示すように排他制御対象状態エリア６３ａ、コア０状態エリア６３ｂ、コア１状態エリア６３ｃ、コア２状態エリア６３ｄを備えている。上記排他制御対象状態エリア６３ａには、「コア０／コア１／コア２／空き」の状態が選択的に書込まれる。コア０状態エリア６３ｂには、コア０（コアプロセッサ１１）に関する「使用中／空き／待ち」の状態が選択的に書込まれる。コア１状態エリア６３ｃには、コア１（コアプロセッサ１２）に関する「使用中／空き／待ち」の状態が選択的に書込まれる。コア２状態エリア６３ｄには、コア２（コアプロセッサ１３）に関する「使用中／空き／待ち」の状態が選択的に書込まれる。
【００２８】
［コアプロセッサ１１（優先度“低”）の動作手順］
先ず、コアプロセッサ（コア０）１１の動作手順について図８のフローチャートを参照して説明する。  
コアプロセッサ１１は、セマフォ管理テーブル６３のコア０状態エリア６３ｂに「待ち」を書込み（ステップＤ１）、次いでコア１状態エリア６３ｃ及びコア２状態エリア６３ｄからコア１とコア２の状態を読み込んで、両方が「空き」となっているかどうかを判断する（ステップＤ２、Ｄ３）。上記コア１とコア２の状態が両方とも「空き」であれば、排他制御対象状態エリア６３ａにおける排他制御対象状態が「空き」になるまで、スピンロックで待つ（ステップＤ４）。
【００２９】
そして、上記排他制御対象状態が「空き」になると、排他制御対象状態エリア６３ａに「コア０」を書込み（ステップＤ５）、コア０状態エリア６３ｂに「使用中」を書込む（ステップＤ６）。その後、コアプロセッサ１１は、排他制御対象を使用する（ステップＤ７）。次に上記排他制御対象の使用が終了したかどうかを判断し（ステップＤ８）、排他制御対象の使用が終了すると、コア０状態エリア６３ｂに「空き」を書込むと共に排他制御対象状態エリア６３ａに「空き」を書込み（ステップＤ９、Ｄ１０）、コアプロセッサ１１の処理を終了する。
【００３０】
また、上記ステップＤ３で、コア１とコア２の何れか一方でも「空き」以外の状態になっていると判断された場合は、排他制御対象状態エリア６３ａにおける排他制御対象状態が「空き」になるまで、スピンロックで待つ（ステップＤ１１）。そして、上記排他制御対象状態が「空き」になるとステップＤ２に戻り、上記した処理を繰り返して実行する。
【００３１】
［コアプロセッサ１２（優先度“中”）の動作手順］
次にコアプロセッサ（コア１）１２の動作手順について図９のフローチャートを参照して説明する。  
コアプロセッサ１２は、セマフォ管理テーブル６３のコア１状態エリア６３ｃに「待ち」を書込み（ステップＥ１）、次いでコア２状態エリア６３ｄからコア２の状態を読み込んで、「空き」となっているかどうかを判断する（ステップＥ２、Ｅ３）。上記コア２の状態が「空き」であれば、排他制御対象状態エリア６３ａにおける排他制御対象状態が「空き」になるまで、スピンロックで待つ（ステップＥ４）。
【００３２】
そして、上記排他制御対象状態が「空き」になると、コアプロセッサ１２は、排他制御対象状態エリア６３ａに「コア１」、コア１状態エリア６３ｃに「使用中」を書込み（ステップＥ５、Ｅ６）、排他制御対象を使用する（ステップＥ７）。
【００３３】
次に上記排他制御対象の使用が終了したかどうかを判断し（ステップＥ８）、排他制御対象の使用が終了すると、コア１状態エリア６３ｃに「空き」を書込むと共に排他制御対象状態エリア６３ａに「空き」を書込み（ステップＥ９、Ｅ１０）、コアプロセッサ１２の処理を終了する。
【００３４】
また、上記ステップＥ３で、コア２が「空き」以外の状態になっていると判断された場合は、排他制御対象状態エリア６３ａにおける排他制御対象状態が「空き」になるまで、スピンロックで待つ（ステップＥ１１）。そして、上記排他制御対象状態が「空き」になるとステップＥ２に戻り、上記した処理を繰り返して実行する。
【００３５】
［コアプロセッサ１３（優先度“高”）の動作手順］
次にコアプロセッサ（コア２）１３の動作手順について図１０のフローチャートを参照して説明する。  
コアプロセッサ１３は、セマフォ管理テーブル６３のコア２状態エリア６３ｄに「待ち」を書込み（ステップＦ１）、その後、排他制御対象状態エリア６３ａにおける排他制御対象状態が「空き」になるまで、スピンロックで待つ（ステップＦ２）。
【００３６】
そして、上記排他制御対象状態が「空き」になると、コアプロセッサ１３は、排他制御対象状態エリア６３ａに「コア１」、コア２状態エリア６３ｄに「使用中」を書込み（ステップＦ３、Ｆ４）、その後、排他制御対象を使用する（ステップＦ５）。
【００３７】
次に上記排他制御対象の使用が終了したかどうかを判断し（ステップＦ６）、排他制御対象の使用が終了すると、コア２状態エリア６３ｄに「空き」を書込むと共に排他制御対象状態エリア６３ａに「空き」を書込み（ステップＦ７、Ｆ８）、コアプロセッサ１３の処理を終了する。
【００３８】
上記のように各コアプロセッサ１１〜１３に「コア０＜コア１＜コア２」の優先度を与えると共に、図７に示すセマフォ管理テーブル６３を各コアプロセッサ１１〜１３で監視することによって全コア間の排他制御を実現でき、また、優先度の高いコアの処理を優先的に短いオーバヘッドで行なうことができる。
【００３９】
また、上記実施形態において、図１１に示すようなリングバッファ型の共有メモリ６４をＬ２メモリ３１〜３４又は外部バス１５に接続されるＳＤＲＡＭ４２に配置することにより、コアプロセッサ１１〜１３間のデータ通信を行なうことも可能である。この場合、各コアプロセッサ１１〜１３からＬ２メモリ３１〜３４又はＳＤＲＡＭ４２へのアクセスは、ソフトウェア処理の負荷を軽減するためにアトミックなハードウェアによって保証する。すなわち、コアプロセッサ１１〜１３からＬ２メモリ３１〜３４又はＳＤＲＡＭ４２へのアクセスは、ある時間に何れか１つだけアクセスすることを可能にしている。
【００４０】
図１１は、コアプロセッサ１１とコアプロセッサ１２間でデータの書込み及び読出しを行なう場合の例を示したもので、共有メモリ６４は、例えばコア０ライトポインタ６４ａ、コア１リードポインタ６４ｂ、及びリングバッファを構成する０〜Ｎの固定長データエリア６５ａ〜６５ｎを備えている。
【００４１】
次に、書込み側のコアプロセッサ（コア０）１１及び読出し側のコアプロセッサ（コア１）１２の動作手順について図１２及び図１３のフローチャートを参照して説明する。
【００４２】
［書込み側のコアプロセッサ（コア０）１１の動作手順］
図１２のフローチャートに示すように、コアプロセッサ１１は、コア０ライトポインタ６４ａ及びコア１リードポインタ６４ｂを読出し（ステップＧ１）、コア０ライトポインタ６４ａが１周回ってコア１リードポインタ６４ｂに追いついたかどうかを判断する（ステップＧ２）。コア０ライトポインタ６４ａがコア１リードポインタ６４ｂに追いついていなければ、コア０ライトポインタ６４ａが指す固定長データの次のエリアにデータを書込み（ステップＧ３）、コア０ライトポインタ６４ａを次のエリアを指すように更新し（ステップＧ４）、データの書込み処理を終了する。
【００４３】
また、上記ステップＧ２で、コア０ライトポインタ６４ａがコア１リードポインタ６４ｂに追いついたと判断された場合は、書込みデータを破棄し（ステップＧ５）、エラー終了する。
【００４４】
［読出し側のコアプロセッサ（コア１）１２の動作手順］
図１３のフローチャートに示すように、コアプロセッサ１２は、コア０ライトポインタ６４ａ及びコア１リードポインタ６４ｂを読出し（ステップＨ１）、コア１リードポインタ６４ｂが１周回ってコア０ライトポインタ６４ａに追いついたかどうかを判断する（ステップＨ２）。コア１リードポインタ６４ｂがコア０ライトポインタ６４ａに追いついていなければ、コア１リードポインタ６４ｂが指す固定長データエリアを読出し（ステップＨ３）、コア１リードポインタ６４ｂを次のエリアを採用に更新する（ステップＨ４）、その後、ステップＨ１に戻り、上記した処理を繰り返して実行する。
【００４５】
そして、上記ステップＨ２で、コア１リードポインタ６４ｂがコア０ライトポインタ６４ａに追いついたと判断された場合は、ステップＨ５に進んで読出しデータなしで終了する。
【００４６】
上記実施形態によれば、マルチコアプロセッサでマルチタスクを実行する場合、１つのコアプロセッサには１つのタスクだけを割り当てることにより、タスクコンテキスト（レジスタやスタック）を切替えることなくマルチタスク処理を実行することができる。
【００４７】
また、コアプロセッサ１１〜１３とＬ２メモリ３１〜３４は、内部バス１４を空間的に多重接続して各Ｌ２メモリ３１〜３４に同時にアクセスできるように構成し、上記Ｌ２メモリ３１〜３４にセマフォ管理テーブルを配置することにより、スピンロック時にバスアクセスが増大する事によるビジーロックを緩和することができる。
【００４８】
また、各コアプロセッサ１１〜１３内、各コアプロセッサ１１〜１３間、及び全コアプロセッサ１１〜１３間の排他制御にそれぞれセマフォＩＤを付与し、このセマフォＩＤにより識別した排他制御処理を切替え、排他制御対象へのアクセス割込みを排他することにより、マルチタスク処理を効率的に行なわせることができる。
【００４９】
また、上記全コアプロセッサ１１〜１３間の排他制御において、各コアプロセッサ１１〜１３に優先度を与える事によって、高い優先度の処理を優先的に短いオーバヘッドで行なわせることができる。
【００５０】
また、リングバッファ型の共有メモリ６４をアトミックな領域、例えばＬ２メモリ３１〜３４又は外部バス１５に接続されるＳＤＲＡＭ４２に配置することにより、コアプロセッサ１１〜１３間のデータ通信を行なうことが可能となる。この場合、共有メモリ６４をアトミックな領域に配置することにより、ソフトウェア処理の負荷を軽減することができる。
【００５１】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できるものである。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施形態に係るマルチコアプロセッサの構成を示すブロック図である。
【図２】同実施形態におけるマルチタスクの構成例を示すブロック図である。
【図３】同実施形態におけるコア内排他制御の動作説明図である。
【図４】コア間排他制御における排他制御対象及びセマフォ管理テーブルの構成例を示す図である。
【図５】コア間排他制御におけるコアプロセッサ（コア０）の動作手順を示すフローチャートである。
【図６】コア間排他制御におけるコアプロセッサ（コア１）の動作手順を示すフローチャートである。
【図７】全コア間排他制御におけるセマフォ管理テーブルの構成例を示す図である。
【図８】全コア間排他制御におけるコアプロセッサ（コア０、優先度：低）の動作手順を示すフローチャートである。
【図９】全コア間排他制御におけるコアプロセッサ（コア１、優先度：中）の動作手順を示すフローチャートである。
【図１０】全コア間排他制御におけるコアプロセッサ（コア２、優先度：高）の動作手順を示すフローチャートである。
【図１１】各コアプロセッサ間でデータのやり取りを行なう場合に使用される共有メモリの構成例を示す図である。
【図１２】各コアプロセッサ間でデータのやり取りを行なう場合のデータ書込み側のコアプロセッサ（コア０）の動作手順を示すフローチャートである。
【図１３】各コアプロセッサ間でデータのやり取りを行なう場合のデータ読出し側のコアプロセッサ（コア１）の動作手順を示すフローチャートである。
【符号の説明】
【００５３】
１１〜１３…コアプロセッサ、１４…内部バス、１５…外部バス、２１〜２３…Ｌ１メモリ、３１〜３４…Ｌ２メモリ、４１…ホストプロセッサ、４２…ＳＤＲＡＭ、４３…通信デバイス、５０…共通部、５１…ライブラリ（Library）、５２…ＩＰＬ、５３…ＯＳ、５４…ドライバ（Driver）、６１…排他制御対象、６２…セマフォ管理テーブル、６２ａ…コア０状態エリア、６２ｂ…コア１状態エリア、６３…セマフォ管理テーブル、６３ａ…排他制御対象状態エリア、６３ｂ…コア０状態エリア、６３ｃ…コア１状態エリア、６３ｄ…コア２状態エリア、６４…共有メモリ、６４ａ…ライトポインタ、６４ｂ…リードポインタ、６５ａ〜６５ｎ…固定長データエリア。
【図１】
0004559958.tif 000002
【図２】
0004559958.tif 000003
【図３】
0004559958.tif 000004
【図４】
0004559958.tif 000005
【図５】
0004559958.tif 000006
【図６】
0004559958.tif 000007
【図７】
0004559958.tif 000008
【図８】
0004559958.tif 000009
【図９】
0004559958.tif 000010
【図１０】
0004559958.tif 000011
【図１１】
0004559958.tif 000012
【図１２】
0004559958.tif 000013
【図１３】
0004559958.tif 000014