(57)【要約】【課題】複数のタスクを処理するマルチコアプロセッサシステムの処理速度を向上させる。【解決手段】マルチコアプロセッサ１は、複数のコア１０、２０と、コア１０、２０それぞれが共有して利用し、書き込み可能なデータ容量の範囲毎に区分された複数のセクション３１〜３３に分割されたメインメモリ３０と、を有する。コア１０、２０に要求されるタスクは、当該タスクのデータ容量によって、書き込まれるセクション３１〜３３が予め設定されている。【選択図】図１
2013191202.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと、
前記コアそれぞれが共有して利用し、書き込み可能なデータ容量が予め定められた複数の記憶領域に区分された共有メモリと、
前記コアに対して要求されるタスクを受け付ける受付部と、
受け付けた前記タスクを、当該タスクのデータ容量に応じて予め設定された前記記憶領域に対して書き込む書き込み部と、
を備えることを特徴とするマルチコアプロセッサ。
【請求項２】
前記共有メモリは、同一の前記データ容量の範囲に対応する前記記憶領域をそれぞれ少なくとも２以上有している
ことを特徴とする請求項１に記載のマルチコアプロセッサ。
【請求項３】
前記書き込み部は、前記記憶領域に対して前記タスクを書き込む際に、他のタスクによる書き込みを禁止する排他処理を行うとともに、前記タスクの共有メモリにおける書き込み位置を交換先の他の前記コアへと通知し、
前記排他処理は、前記他のコアによる当該タスクの処理が完了した結果の戻り値が前記記憶領域から読み出された際に、解除される
ことを特徴とする請求項１に記載のマルチコアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを備えたマルチコアプロセッサに関する。
【背景技術】
【０００２】
従来、複数のコアがメインメモリを共有する密結合型のマルチコアプロセッサシステムが知られている。このようなマルチコアプロセッサシステムの一例としては特許文献１に記載されているように、コア毎のメッセージ交換バッファをメインメモリに設け、この交換バッファを介してデータ交換が行われる構成が採用されている。
【０００３】
具体的には、まず送信側のコアがデータを共有メモリ上のメッセージ交換バッファにデータをセットしたのちに、受信側のコアに対して割り込み要求を出す。受信側のコアは、メッセージ交換バッファからデータを取り込み、受信バッファにデータをセットする。受信側のコアは、受信データによる要求処理完了後、処理完了のメッセージをメッセージ交換バッファにセットする。受信側のコアは、送信側のコアに対して割り込み要求を出し、送信側のコアはメッセージ交換バッファから処理完了のメッセージを受理する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記のような方式におけるコア間通信においては、あるタスクにおいてコア間の通信が発生しているときには、他のタスクに対してメモリへの書き込みが排他状態となっている。このため、処理待ちが発生してしまい、処理速度の低下を招いてしまう可能性があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、複数のタスクを処理するマルチコアプロセッサの処理速度を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、複数のコアと、前記コアそれぞれが共有して利用し、書き込み可能なデータ容量が予め定められた複数の記憶領域に区分された共有メモリと、を有するマルチコアプロセッサであって、前記コアに要求されるタスクは、当該タスクのデータ容量によって、書き込まれる前記記憶領域が予め設定されていることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、複数のタスクを処理するマルチコアプロセッサの処理速度を向上させることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、マルチコアプロセッサの全体構成を示す概念図である。
【図２】図２は、マルチコアプロセッサにおけるメインメモリへの書き込み処理の概要を示す図である。
【図３】図３は、マルチコアプロセッサによる、コア間におけるメインメモリへの書き込みが可能な際の処理の流れを示すシーケンス図である。
【図４】図４は、マルチコアプロセッサによる、コア間におけるメインメモリへの書き込みができない場合の処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、マルチコアプロセッサの実施の形態を詳細に説明する。図１は、実施の形態にかかるマルチコアプロセッサの構成を示すブロック図である。マルチコアとは、1つのプロセッサパッケージ内に複数のプロセッサコアを封入したものであり、本実施形態においては２つのコアを実装した実施形態を示すが、コアの数が増えた場合であっても本発明は適用可能である。
【００１０】
図１に示されるマルチコアプロセッサ１は、第１コア１０、第２コア２０、及びメインメモリ３０を備えている。第１コア１０には、実装Ｉ／Ｆ１１、スタブＩ／Ｆ１２、タスク送信部１３、及びタスク受信部１４が設けられている。同じく、第２コア２０には、実装Ｉ／Ｆ２１、スタブＩ／Ｆ２２、タスク送信部２３、及びタスク受信部２４が設けられている。タスクとは、様々なプログラムやライブラリにより実行を要求される処理命令である。
【００１１】
実装Ｉ／Ｆ１１、２２は、受理したタスクをプロセッサにおいて実行するための処理命令として受け付けるインタフェースである。スタブＩ／Ｆ１２、２２は、異なるコア間では直接実装Ｉ／Ｆ１１、１２をコールすることができないことから、仮想的に他のコアのシステムをコールすることができるように論理的に設定したスタブとして機能する。第１コア１０のスタブＩ／Ｆ１２は、第２コア２０の実装Ｉ／Ｆ２１と論理的に同じインタフェースとして設定されており、一方、第２コア２０のスタブＩ／Ｆ２２は、第１コア１０の実装Ｉ／Ｆ１１と論理的に同じインタフェースとして設定されている。
【００１２】
タスク送信部１３、２３は、コアが受信したタスクをメインメモリ３０へと書き込むとともに、書き込みの際に他のコアのタスク受信部１４、２４へと書き込みを通知し、書き込み部に相当する。なお、タスク送信部１３、２３は、メインメモリ３０への書き込みの際には、メインメモリ３０の記憶領域への他の処理による書き込みを禁止する排他制御を行う。タスク受信部１４、２４は、タスク送信部１３、２３から受理した書き込み通知を契機に、メインメモリ３０の指定の場所からデータの読み込み処理を行い、受付部に相当する。このように、メインメモリ３０と介して、第１コア１０、及び第２コア２０の間でのデータの交換が行われる。
【００１３】
また、メインメモリ３０（共有メモリ）は、３つのセクション（記憶領域）を備えている。第１セクション３１は、データ容量が３２バイト以下のデータの書き込み、及び読み込みに利用されるセクションである。第２セクション３２は、３２バイトより大きく、１キロバイト以下のデータの書き込み、及び読み込みに利用されるセクションである。第３セクション３３は、１キロバイトより大きく、６５キロバイト以下のデータの書き込み、及び読み込みに利用されるセクションである。なお、本実施形態にあっては、全てのセクションのサイズが異なる場合を表示したが、同じサイズに対応したセクションが複数も受けられるようにしてもよい。また、メインメモリ３０は、図示しないセクション３１〜３３以外の領域に、各セクションの位置の範囲を示すアドレス情報や、各セクション３１〜３３が使用中であるか否かを示すフラグ情報などを記憶する領域を有している。
【００１４】
図２は、どのセクション３１〜３３に対してタスクが書き込まれるかについての概要を示した図である。図２に示されるように、スタブＩ／Ｆ１２、２２には、それぞれプロトコル（プログラムやライブラリ）毎に対応するインタフェースがそれぞれ設けられている。例えば、プロトコル１から要求されたタスクについては、スタブＩ／Ｆ  Ａがコールされて、タスク送信部１３へと引き渡される。コールされるインタフェースは、タスクのデータ容量に応じて設定されている。したがって、プロトコルが要求するタスクごとに、そのデータ容量に応じて予め書き込みが行われるセクションが設定されている。
【００１５】
次に、図１を参照して、コア間のデータの交換の処理の流れについて説明する。説明においては、第１コア１０から第２コア２０へとデータが渡される場合を想定している。図１に示されるように、（１）第１コア１０に対して要求されたタスクは、第１コア１０において設けられた第２コア２０と論理的に接続されたスタブＩ／Ｆ１２をコールする。この際、コールするスタブＩ／Ｆ１２は、タスクに必要なメモリのサイズによって決定される。（２）続いて、スタブＩ／Ｆ１２は、要求タスクをタスク送信部１３へと転送して、処理要求を行う。（３）処理要求を受け付けたタスク送信部１３は、メインメモリ３０へとタスクの書き込みを行う。この際、タスクに必要なデータ容量に応じて予め設定されたセクション３１〜３３に対して、書き込みが行われる。本実施形態では、コールされたスタブＩ／Ｆ１２によって、書き込まれるメインメモリ３０のセクションが予め対応付けられて決定されている。したがって、タスク１がスタブＩ／Ｆ１２を選択した時点で書き込むセクションは決定されている。書き込むセクションの判断基準は、上述した各セクション３１〜３３毎に定められた対応するデータ容量に基づく。なお、タスク送信部１３は、データを書き込んだセクション３１〜３３に対し、後述するタスク受信部１４によるデータの読み込みが行われるまでの間、他のタスクの書き込みを禁止する排他制御を行う。また、この段階でタスク送信部１３は、解放されて他のタスクを受け付けて処理可能となる。
【００１６】
（４）続いて、タスク送信部１３は、第２コア２０のタスク受信部２４に対して、メインメモリ３０の書き込みを行ったセクション３１〜３３を指定して、通知を行う。（５）通知を受け取ったタスク受信部２４は、メインメモリ３０の指定のセクション３１〜３３からタスクが書き込んだ情報の読み込みを行う。（６）タスク受信部２４は、実装Ｉ/Ｆ２１をコールして、読み込んだタスクが書き込んだ情報を引き渡す。（７）タスクが書き込んだ情報を受け取った実装Ｉ／Ｆ２１は、タスクが書き込んだ情報に基づいた処理を第２コア２０にて実行し、その実行結果をタスク受信部２４へと返信する。（８）タスク受信部２４は、受け取った実行結果をメインメモリ３０の該当するセクション３１〜３３へと書き込む。（９）タスク受信部２４は、実行結果を書き込んだことをコア１０のタスク受信部１４へと通知する。（１０）第１コア１０のタスク受信部１４は、メインメモリ３０の指定のセクション３１〜３３から第２コア２０におけるタスクの実行結果を読み込む。なお、この時点でタスク１によるメインメモリ３０の排他制御は終了する。具体的には、上述する該当するセクションの使用中か否かを示すフラグ情報が更新される。（１１）タスク受信部１４は、読み込んだタスクの実行結果をコールされたスタブＩ／Ｆ１２へと送信する。（１２）そして、最後にスタブＩ／Ｆ１２は、元のタスク１へと実行結果を送信し、処理を終了する。なお、第２コア２０においてタスクを要求された場合においても同様の処理の流れとなる。
【００１７】
続いて、以上で示したタスクの処理の流れを図３、図４のシーケンス図を用いて説明する。図３は、メインメモリ３０に書き込みが成功した場合、図４はメインメモリ３０への書き込みが出来なかった場合を示している。図３に示されるように、まずタスク１はスタブＩ／Ｆ１２に対して、ファンクションコールを実行する（ステップＳ１０１）。次いで、スタブＩ／Ｆ１２は、タスク送信部１３に対して、ファンクションＩＤや引数情報、メインメモリ３０で書き込みに必要なセクションサイズなどの情報を含むファンクションコール要求を行う（ステップＳ１０２）。タスク送信部１３は、メインメモリ３０に対して、スタブＩ／Ｆ１２から要求されたセクションサイズに相当するメインメモリ３０のセクション３１〜３３を確保する（ステップＳ１０３）。また、タスク送信部１３は、確保したメインメモリ３０のセクション３１〜３３に相当する使用中を示すフラグ情報を「使用中」に相当する値に更新する（ステップＳ１０４）。
【００１８】
次いで、タスク送信部１３は、メインメモリ３０の該当するセクション３１〜３３に、ファンクションＩＤと、引数を書き込む（ステップＳ１０５）。これらの処理をして、コア２０からの返信があるまでスタブＩ／Ｆ１２は待機中となる（ステップＳ１０６）。次いで、タスク送信部１３は、コア２０のタスク受信部２４に対して、書き込んだメインメモリ３０のセクション３１〜３３の書き込み位置を通知する（ステップＳ１０７）。タスク受信部２４は、実装Ｉ／Ｆ２１に対してファンクションコールを送信し、実装Ｉ／Ｆ２１を通じて処理が実行され、処理の結果を受け取る（ステップＳ１０８）。
【００１９】
タスク受信部２４は、タスクの処理結果として受け取ったファンクションＩＤと、戻り値をメインメモリ３０に書き込む（ステップＳ１０９）。この際、書き込むセクション３１〜３３も、ステップＳ１０３で確保したセクションと同様である。次いで、タスク受信部２４は、コア１０のタスク受信部１４に対して戻り値を書き込んだメインメモリ３０の位置情報を通知する（ステップＳ１１０）。タスク受信部１４は、指定された位置情報のメインメモリ３０からファンクションＩＤと戻り値を読み出す（ステップＳ１１１）。この際、タスク受信部１４は、メインメモリ３０の該当するセクション３１〜３３のフラグ情報を「未使用」へと更新する（ステップＳ１１２）。タスク受信部１４は、戻り値をスタブＩ／Ｆ１２へと通知し（ステップＳ１１２）、戻り値はタスク１へと返却される（ステップＳ１１３）。
【００２０】
次に、メインメモリ３０への書き込みが出来なかった場合について図４を参照して説明する。ステップＳ１０３までは図３の場合と同様であり説明は省略する。図４に示されるように、ステップＳ１０３のメモリ領域の確保にかかる処理の結果として、タスク送信部１３は、エラーを受け取る。タスク送信部１３は、スタブＩ／Ｆ１２に対してエラー戻り値を通知し（ステップＳ２０１）、タスク１にエラー戻り値が返却される（ステップＳ２０２）。
【００２１】
以上に示した本実施の形態のマルチコアプロセッサ１においては、複数のコア間におけるデータの交換がメインメモリ３０を介して行われる場合に、タスクのデータサイズに応じて利用するメインメモリ３０のセクション３１〜３３を変更する。このため、複数のタスクが並列して処理を要求される場合に、排他処理によってメインメモリ３０への書き込みを行うことができずに待ち時間が発生してしまう頻度を極力抑えることができる。したがって、複数のタスクを処理するマルチコアプロセッサシステムの処理速度を向上させることができるようになる。
【００２２】
このような並列するタスクの例としては、例えばＨＴＴＰのプロトコルで、プリンタなどの管理画面を取得する処理と、ＳＮＭＰのプロトコルでプリンタの状態を制御する処理などがある。このように同時に要求されることが多いタスクがあっても、メモリへのアクセの待機待ちを回避して、処理の高速化を図ることができるようになる。
【００２３】
また、タスク送信部１３は、メインメモリ３０への書き込みが終わった時点で、新たなタスクを受理して処理することが可能となる。このため、処理の高速化を図ることができるようになる。
【００２４】
なお、本実施形態においては、メインメモリ３０のセクション数を３つとしたが、これは適宜変更することができる。また、同じデータサイズに対応するセクションを複数も受けてもよい。また、メインメモリ３０の各セクションごとに記憶可能なデータ量は本実施形態で示した例に限定されず、他の組み合わせに変更してもよい。
【符号の説明】
【００２５】
１  マルチコアプロセッサ
１０  第１コア
１１  実装Ｉ／Ｆ
１２  スタブＩ／Ｆ
１３  タスク送信部
１４  タスク受信部
２０  第２コア
２１  実装Ｉ／Ｆ
２２  スタブＩ／Ｆ
２３  タスク送信部
２４  タスク受信部
３０  メインメモリ
３１  第１セクション
３２  第２セクション
３３  第３セクション
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開昭５７−１６１９６２号公報
【図１】
2013191202.tif 000003
【図２】
2013191202.tif 000004
【図３】
2013191202.tif 000005
【図４】
2013191202.tif 000006