(57)【要約】【課題】特別な管理や制御を行なうことなく、効率的にプロセッサコアにタスクを処理させることができるようにする。【解決手段】第１のプロセッサコア１１が、第１のタスクの処理に際して第２のタスクに関する処理要求を行なう際に、第１のプロセッサコア１１により用いられるメモリ領域３１に第２のタスクに関する情報を格納するとともに、複数のプロセッサダイ１０にそれぞれそなえられた各第２のプロセッサコア１２に対して割込通知を行ない、割込通知を受けた第２のプロセッサコア１２が、第２のプロセッサコア１２と同一のプロセッサダイ１０上にそなえられた第１のプロセッサコア１１によって用いられるメモリ領域３１に対してそれぞれアクセスを行なう。【選択図】図１
2010140146.tif 000002
【特許請求の範囲】
【請求項１】
第１のタスクを処理する第１のプロセッサコアと、第２のタスクを処理する第２のプロセッサコアとが形成されたプロセッサダイを複数そなえたマルチコアプロセッサであって、
前記第１のプロセッサコアが、前記第１のタスクの処理に際して前記第２のタスクに関する処理要求を行なう際に、前記第１のプロセッサコアに用いられるメモリ領域に前記第２のタスクに関する情報を格納するとともに、前記複数のプロセッサダイにそれぞれそなえられた各第２のプロセッサコアに対して割込通知を行ない、
前記割込通知を受けた前記第２のプロセッサコアが前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアに用いられる前記メモリ領域に対してそれぞれアクセスを行なうことを特徴とする、マルチコアプロセッサ。
【請求項２】
前記割込通知を受けた第２のプロセッサコアが、タスク処理中である場合には、前記タスクの終了後に、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアに用いられる前記メモリ領域に対してアクセスを行なうことを特徴とする、請求項１記載のマルチコアプロセッサ。
【請求項３】
前記割込通知を受けた第２のプロセッサコアが、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアに用いられる前記メモリ領域に対してアクセスを行なった結果、前記メモリ領域において前記第２のタスクに関する情報を取得することができなかった場合に、前記第２のプロセッサコアと異なる前記プロセッサダイ上にそなえられた前記第１のプロセッサコアに用いられる前記メモリ領域に対してアクセスを行なうことを特徴とする、請求項１又は請求項２記載のマルチコアプロセッサ。
【請求項４】
前記第１のプロセッサコアが、前記第１のプロセッサコアと同一の前記プロセッサダイ上にそなえられたキャッシュに対しても、前記第２のタスクに関する情報を格納することを特徴とする、請求項１〜請求項３のいずれか１項に記載のマルチコアプロセッサ。
【請求項５】
第１のタスクを処理する第１のプロセッサコアと、第２のタスクを処理する第２のプロセッサコアとが形成されたプロセッサダイを複数そなえたマルチコアプロセッサにおける制御方法であって、
前記第１のプロセッサコアが、
前記第１のタスクの処理に際して前記第２のタスクに関する処理要求を行なう際に、前記第１のプロセッサコアに用いられるメモリ領域に前記第２のタスクに関する情報を格納する格納ステップと、
前記複数のプロセッサダイにそれぞれそなえられた各第２のプロセッサコアに対して割込通知を行なう通知ステップと、
前記第２のプロセッサコアが、
前記割込通知を受ける受信ステップと、
前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してそれぞれアクセスを行なうアクセスステップとをそなえることを特徴とする、制御方法。
【請求項６】
請求項１〜請求項４のいずれか１項に記載のマルチコアプロセッサをそなえたことを特徴とする、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、複数のプロセッサコアが形成されたプロセッサダイを複数そなえたマルチコアプロセッサにおいてタスクを処理する技術に関する。
【背景技術】
【０００２】
１つのプロセッサ内に複数のプロセッサコアを搭載するマルチコアプロセッサにおいては、搭載された複数のプロセッサコアにより、命令列を同時に独立に実行することが可能である。又、このマルチコアプロセッサとして、異なるタイプのプロセッサコアを同一のプロセッサ内に複数搭載する、ヘテロジニアスなマルチコアプロセッサ（ヘテロジニアス・マルチコアプロセッサ）が知られている。
【０００３】
このヘテロジニアス・マルチコアプロセッサにおいては、異なるタイプのプロセッサコアとして、例えば、ＯＳ（Operating System）が動作するＯＳコアと、主に演算を実行する演算コアとをそなえるものがある。
従来、このようなヘテロジニアス・マルチコアプロセッサにおいてタスクを処理する手法として、各コアの動作状態を管理部によって管理する手法が用いられている。この従来手法においては、管理部が各コアの動作状態に基づいて、タスクを振り分けるコアを選択し、選択したコアに対してタスクを供給している。
【特許文献１】特開２００８−８４００９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、このような従来のマルチコアプロセッサにおいては、各コアの状態の管理や、タスクを振り分けるコアの選択等の制御が煩雑であるという課題がある。
本件の目的の一つは、このような課題に鑑み創案されたもので、特別な管理や制御を行なうことなく、効率的にプロセッサコアにタスクを処理させることができるようにすることである。
【課題を解決するための手段】
【０００５】
このため、このマルチコアプロセッサは、第１のタスクを処理する第１のプロセッサコアと、第２のタスクを処理する第２のプロセッサコアとが形成されたプロセッサダイを複数そなえたマルチコアプロセッサであって、前記第１のプロセッサコアが、前記第１のタスクの処理に際して前記第２のタスクに関する処理要求を行なう際に、前記第１のプロセッサコアに用いられるメモリ領域に前記第２のタスクに関する情報を格納するとともに、前記複数のプロセッサダイにそれぞれそなえられた各第２のプロセッサコアに対して割込通知を行ない、前記割込通知を受けた前記第２のプロセッサコアが、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してそれぞれアクセスを行なうものである。
【０００６】
また、このマルチコアプロセッサにおける制御方法は、第１のタスクを処理する第１のプロセッサコアと、第２のタスクを処理する第２のプロセッサコアとが形成されたプロセッサダイを複数そなえたマルチコアプロセッサにおける制御方法であって、前記第１のプロセッサコアが、前記第１のタスクの処理に際して前記第２のタスクに関する処理要求を行なう際に、前記第１のプロセッサコアに用いられるメモリ領域に前記第２のタスクに関する情報を格納する格納ステップと、前記複数のプロセッサダイにそれぞれそなえられた各第２のプロセッサコアに対して割込通知を行なう通知ステップと、前記第２のプロセッサコアが、前記割込通知を受ける受信ステップと、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してそれぞれアクセスを行なうアクセスステップとをそなえるものである。
【０００７】
さらに、この情報処理装置は、上述したマルチコアプロセッサをそなえるものである。
【発明の効果】
【０００８】
開示のマルチコアプロセッサ，制御方法および情報処理装置によれば、マルチコアプロセッサの構成を簡素化することができ、製造コストを低減する他、負荷を軽減し、処理速度を高速化することもできる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本マルチコアプロセッサ，制御方法および情報処理装置に係る実施の形態を説明する。
図１は実施形態の一例としてのマルチコアプロセッサの構成を模式的に示す図である。
この図１に示す例においては、本マルチコアプロセッサとしてのＣＰＵ（Central Processing Unit）１００とともに、ＭＣＨ（Memory Control Hub）２０およびメモリ３０が示されている。
【００１０】
ＣＰＵ１００は、メモリ３０やＨＤＤ（Hard Disk Drive：磁気記憶装置）等の図示しない記憶装置に格納されたプログラム（タスク，ジョブ）を実行することにより、種々の演算や制御を行ない、種々の機能を実現するものである。このＣＰＵ１００は、例えば、情報処理装置や制御機器にそなえられるようになっている。又、このＣＰＵ１００は、情報処理装置や制御機器において、そのマザーボード（図示省略）に、ＭＣＨ２０やメモリ３０とともに搭載されるようになっている。
【００１１】
ＭＣＨ２０は、ＣＰＵ１００に対するデータの入出力を制御するチップセットであって、ＣＰＵ１００にＣＰＵバス２１を介して通信可能に接続されている。又、このＭＣＨ２０には、メモリ３０や図示しないグラフィックカードが接続されており、ＭＣＨ２０は、ＣＰＵ１００と、これらのメモリ３０やグラフィックボードとの間におけるデータの授受を制御するようになっている。なお、ＣＰＵ１００とＭＣＨ２０とを接続するＣＰＵバス２１としては、例えば、ＦＳＢ（Front Side Bus）を用いることができる。又、このＭＣＨ２０には、他のチップセット（サウスブリッジ：図示省略）も接続されており、このサウスブリッジが、ＣＰＵ１００とＩ／Ｏ（Input/Output）機器との間のデータの入出力を制御するようになっている。
【００１２】
メモリ３０は、種々のデータやプログラムを一時的に格納する記憶装置（主記憶装置）であって、ＭＣＨ２０にメモリバス２２を介して接続されている。このメモリ３０は例えばＲＡＭ（Random Access Memory）である。
このメモリ３０には、後述するＣＰＵ１００のＯＳコア１１ａ，１１ｂがそれぞれデータ（タスク情報；詳細は後述）の書き込みや更新を任意に行なうことができる領域（メモリ領域）３１がそなえられている。図１に示す例においては、ＯＳコア１１ａが用いる領域３１ａと、ＯＳコア１１ｂが用いる領域３１ｂとが示されている。
【００１３】
なお、以下、領域を示す符号としては、複数の領域のうち１つを特定する必要があるときには符号３１ａ，３１ｂを用いるが、任意の領域を指すときには符号３１を用いる。
また、このメモリ３０には、後述するＣＰＵ１００の演算コア１２ａ，１２ｂがそれぞれデータの書き込みや更新を任意に行なうことができる領域（図示省略）もそなえられている。
【００１４】
ＣＰＵ１００は、図１に示すように、複数（図１に示す例においては２つ）のダイ（プロセッサダイ）１０ａ，１０ｂをそなえている。ダイ１０ａには、ＯＳコア（第１のプロセッサコア）１１ａ，演算コア（第２のプロセッサコア）１２ａ，およびＬ２キャッシュ１３ａが形成されている。又、ダイ１０ｂには、ＯＳコア（第１のプロセッサコア）１１ｂ，演算コア（第２のプロセッサコア）１２ｂ，およびＬ２キャッシュ１３ｂが形成されている。
【００１５】
そして、ＯＳコア１１ａとＯＳコア１１ｂとは互いにほぼ同様の構成をそなえており、同様に、演算コア１２ｂと演算コア１２ｂ、および、Ｌ２キャッシュ１３ａとＬ２キャッシュ１３ｂとも、互いにほぼ同様の構成をそなえている。すなわち、ダイ１０ａとダイ１０ｂとも互いにほぼ同様の構成をそなえているのである。
また、これらのＯＳコア１１ａ，ＯＳコア１１ｂ，演算コア１２ａおよび演算コア１２ｂは、バス１４を介して互いに通信可能に接続されている。
【００１６】
なお、以下、ＯＳコアを示す符号としては、複数のＯＳコアのうち１つを特定する必要があるときには符号１１ａ，１１ｂを用いるが、任意のＯＳコアを指すときには符号１１を用いる。
同様に、以下、演算コアを示す符号としては、複数の演算コアのうち１つを特定する必要があるときには符号１２ａ，１２ｂを用いるが、任意の演算コアを指すときには符号１２を用いる。又、以下、Ｌ２キャッシュを示す符号としては、複数のＬ２キャッシュのうち１つを特定する必要があるときには符号１３ａ，１３ｂを用いるが、任意のＬ２キャッシュを指すときには符号１３を用いる。更に、以下、ダイを示す符号としては、複数のダイのうち１つを特定する必要があるときには符号１０ａ，１０ｂを用いるが、任意のダイを指すときには符号１０を用いる。
【００１７】
ＯＳコア１１は、ＯＳ（第１のタスク）を処理するプロセッサコアである。又、ＯＳコア１１は、ＯＳの処理に際して演算処理にかかるタスクがあった場合には、その演算処理にかかるタスクをいずれかの演算コア１２に処理させるべく、ＣＰＵ１００にそなえらえた全ての演算コア１２に対して演算要求（第２のタスクに関する処理要求）を出すようになっている。
【００１８】
具体的には、ＯＳコア１１は、ＣＰＵ１００にそなえらえた全ての演算コア１２に対して割込通知を行なう（割り込みを上げる）ことにより演算要求を行なうようになっている。なお、演算コア１２に対して割込通知を行なう手法としては、例えば、演算コア１２における所定のポートや入力端子に対して割込信号を入力することにより実現することができる。又、このような演算コア１２に対して割込通知を行なう手法は、既知の種々の手法を用いて実現してもよい。
【００１９】
また、ＯＳコア１１は、演算コア１２に対して割込通知を行なうことによって演算要求を行なうに際して、メモリ３０における所定の領域３１（キュー）に、その演算処理にかかるタスクについての情報（タスク情報）を格納するようになっている。
具体的には、ＯＳコア１１ａの場合には、演算コア１２に対して演算要求の割込通知を行なうに際して、メモリ３０の領域３１ａに、その演算処理にかかるタスク情報を格納する。同様に、ＯＳコア１１ｂの場合には、演算コア１２に対して演算要求の割込通知を行なうに際して、メモリ３０の領域３１ｂに、その演算処理にかかるタスク情報を格納する。
【００２０】
このタスク情報は、演算コマンド（以下、単にコマンドという場合がある）や、このコマンドについての演算対象のデータに関する情報である。例えば、タスク情報として、コマンド種類，データ数，データサイズ，格納先，演算結果の格納先等に関する情報が、領域３１にリンク先アドレス等の形式で格納されるようになっている。
また、ＯＳコア１１は、領域３１にタスク情報を格納するとともに、領域３１に対して行なったタスク情報の格納をＬ２キャッシュ１３（詳細は後述）に反映させるよう、キャッシュコントローラ（図示省略）等に更新させるようになっている。
【００２１】
そして、ＯＳコア１１は、上述したタスク情報をキューに登録後、全ての演算コア１２に対して割込通知を行なうようになっている。
Ｌ２キャッシュ１３は、ダイ１０にそなえられたキャッシュであって、ＯＳコア１１や演算コア１２（詳細は後述）において頻繁に用いられるデータ等を一時的に格納する記憶装置である。ＯＳコア１１や演算コア１２は、タスク情報等のデータを取得するために、メモリ３０等の外部の記憶領域にアクセスする前に、このＬ２キャッシュ１３にアクセスし、このＬ２キャッシュに所望のデータが格納されていない場合に、メモリ３０等へデータを取得するためのアクセスを行なうようになっている。
【００２２】
すなわち、ＯＳコア１１や演算コア１２は、タスク情報等のデータを取得するに際して、Ｌ２キャッシュ１３においてキャッシュミスが発生した場合に、メモリ３０等へデータを取得するためのアクセスを行なうようになっている。
また、Ｌ２キャッシュ１３は、同一ダイ１０上に形成されたＯＳコア１１と演算コア１２とにより共用されるようになっている。すなわち、ＯＳコア１１ａと演算コア１２ａとは、同じくダイ１０ａ上に形成されたＬ２キャッシュ１３ａを共有し、ＯＳコア１１ｂと演算コア１２ｂとは、同じくダイ１０ｂ上に形成されたＬ２キャッシュ１３ｂを共有している。
【００２３】
なお、Ｌ２キャッシュ１３は、図示しないキャッシュコントローラによって、逐次更新されるようになっている。
演算コア１２は、演算処理にかかるタスク（第２のタスク）を処理するプロセッサコアである。
例えば、本ＣＰＵ１００がＲＡＩＤ（Redundant Arrays of Inexpensive Disks）コントローラのプロセッサとして用いられる場合においては、ＸＯＲ（exclusive or：排他的論理和）演算やＣＲＣ（Cyclic Redundancy Check：巡回冗長検査）演算，暗号化に伴う演算コマンド等が、演算処理にかかるタスクとして演算コア１２によって実行される。
【００２４】
この演算コア１２は、ＯＳコア１１からの演算要求を受けて、この演算にかかるタスクであるコマンドを処理（演算）し、その結果をＯＳコア１１に返すようになっている。
また、演算コア１２は、複数のＯＳコア１１ａ，１１ｂのいずれから行なわれた演算要求についても処理することができるようになっている。
そして、演算コア１２は、ＯＳコア１１から送信された割込通知を受けると、その演算コア１２と同一のダイ１０上のＯＳコア１１によって管理される（用いられる）メモリ領域に対してタスク情報を取得するためのアクセス（参照）を行なうようになっている。
【００２５】
具体的には、演算コア１２ａは、ＯＳコア１１から割込通知を受けると、ダイ１０ａ上のＯＳコア１１ａによって管理される領域３１ａに対してタスク情報を取得するためのアクセスを行なう。同様に、演算コア１２ｂは、ＯＳコア１１から割込通知を受けると、ダイ１０ｂ上のＯＳコア１１ｂによって管理される領域３１ｂに対してタスク情報を取得するためのアクセスを行なう。
【００２６】
また、演算コア１２は、タスク情報の取得を行なうに際して、先ず、同一ダイ１０上のＬ２キャッシュ１３にアクセスしてタスク情報の取得を試みるようになっている。そして、演算コア１２は、このＬ２キャッシュにおいてキャッシュミスが生じた場合に、メモリ３０の領域３１に対してタスク情報を取得するためのアクセスを行なうようになっている。
【００２７】
なお、以下、本実施形態においては、演算コア１２による「同一のダイ１０上にそなえられたＯＳコア１１によって用いられるメモリ領域へのアクセス」には、演算コア１２がメモリ３０の領域３１に対してアクセスを行なうことと、メモリ３０へのアクセスに先立ってＬ２キャッシュ１３に対してアクセスを行なうこととを含むものとする。
すなわち、割込通知を受けた演算コア１２は、演算処理にかかるタスクに関する情報を取得すべく、その演算コア１２と同一のダイ１０上にそなえられたＯＳコア１１によって管理されるメモリ領域、すなわち、Ｌ２キャッシュ１３やメモリ３０の領域３１に対してそれぞれアクセスを行なう。
【００２８】
演算コア１２が、Ｌ２キャッシュ１３からタスク情報を取得することにより、メモリ３０へのアクセスを行なう必要がなく、これによりタスクを高速に処理することができ、ＣＰＵ１００の処理速度を向上させることができる。
さらに、演算コア１２は、同一ダイ１０上にそなえられたＯＳコア１１によって管理されるメモリ領域（Ｌ２キャッシュ１３および領域３１）からタスク情報の取得を取得できなかった場合に、他のダイ１０上にそなえられたＯＳコア１１によって管理される（用いられる）領域３１に対してタスク情報を取得するためのアクセス（参照）を行なうようになっている。
【００２９】
具体的には、演算コア１２ａは、ＯＳコア１１ａによって管理されるＬ２キャッシュ１３ａおよび領域３１ａからタスク情報を取得できなかった場合には、次に、ＯＳコア１１ｂによって管理されるメモリ３０の領域３１ｂに対してタスク情報を取得するためのアクセスを行なう。同様に、演算コア１２ｂは、ＯＳコア１１ｂによって管理されるＬ２キャッシュ１３ｂおよび領域３１ｂからタスク情報を取得できなかった場合には、次に、ＯＳコア１１ａによって管理されるメモリ３０の領域３１ａに対してタスク情報を取得するためのアクセスを行なう。
【００３０】
そして、演算コア１２は、Ｌ２キャッシュ１３もしくはメモリ３０においてタスク情報を取得できた場合には、このタスク情報を用いて、その演算処理にかかるタスクを処理する。
また、演算コア１２がＬ２キャッシュ１３もしくはメモリ３０においてタスク情報を取得した場合には、そのタスク情報はメモリ３０やＬ２キャッシュ１３から消去されるようになっている。なお、これらのメモリ３０やＬ２キャッシュ１３からのタスク情報の消去は、演算コア１２およびＯＳコア１１のいずれが行なってもよく、又、これらの演算コア１２やＯＳコア１１以外ものが行なってもよい。
【００３１】
なお、演算コア１２が、ＯＳコア１１からの割込通知を受けた際に、他のタスクにかかる処理を行なっている（ビジー（busy）状態）場合には、その演算コア１２は、その処理中のタスクを完了させて処理を行なっていない状態（アイドル（idle）状態）になってから、タスク情報の参照を行なうようになっている。
このように、演算を行なっていない演算コア１２が優先的にタスクの処理を行なうようになっているので、負荷の低い演算コア１２がタスクを優先的に処理を行なうことになり、複数そなえられた演算コア１２を効率的に使用することができるのである。
【００３２】
上述の如く構成された本実施形態の一例としてのＣＰＵ１００におけるタスク処理手法を、図３〜図６を参照しながら、図２に示すフローチャート（ステップＡ１０〜Ａ７０）に従って説明する。
図３〜図６はＯＳコア１１および演算コア１２の処理を説明するための図である。なお、これらの図３〜図６に示す例においては、本来、領域３１やＬ２キャッシュに登録されているコマンドＣを、便宜上、ＯＳコア１１ａの近くに配置して示している。又、これらの図３〜図６においては、便宜上、ＯＳコア１１ａ，１１ｂ，演算コア１２ａ，１２ｂ以外の図示を省略している。
【００３３】
また、図２〜図６においては、演算コア１２ａ，１２ｂがいずれもアイドル状態である場合にＯＳコア１１ａから割込通知を受けた例を示している。
ＣＰＵ１００において、例えば、ＯＳコア１１ａがＯＳを実行処理中に、演算処理にかかるタスクがあった場合には、図３に示すように、ＯＳコア１１ａは、そのタスク情報（コマンド等）を領域３１ａやＬ２キャッシュ１３ａに登録する（ステップＡ１０；キャッシュ格納ステップ）。
【００３４】
そして、ＯＳコア１１ａは、図４に示すように、全ての演算コア１２ａ，１２ｂに対して割込通知を行なう（ステップＡ２０；通知ステップ）。
割込通知を受けた演算コア１２ａ，１２ｂは（受信ステップ）、それぞれ、自コアと同じダイ１０上のＯＳコア１１ａ，１１ｂによって管理されるキューを参照する（ステップＡ３０；アクセスステップ）。すなわち、演算コア１２ａは領域３１ａ（Ｌ２キャッシュ１３ａ）を参照し、演算コア１２ｂは領域３１ｂ（Ｌ２キャッシュ１３ｂ）を参照する（図５参照）。
【００３５】
各演算コア１２は、参照したキューにコマンドがあるか否かを確認し（ステップＡ４０）、コマンドがある場合には（ステップＡ４０のＹＥＳルート参照）、そのコマンドを取得するとともに、領域３１からその取得したコマンドを削除する。その後、演算コア１２は、取得したコマンドを処理して（ステップＡ５０）、処理を終了する。
一方、参照したキューにコマンドがない場合には（ステップＡ４０のＮＯルート参照）、演算コア１２は、他のダイ１０上のＯＳコア１１ａ，１１ｂによって管理されるキューを参照する（ステップＡ６０；外部アクセスステップ）。
【００３６】
演算コア１２においては、参照した他ダイ１０のＯＳコア１１にかかるキュー（領域３１）にコマンドがあるか否かを確認し（ステップＡ７０）、その結果、コマンドがある場合には（ステップＡ７０のＹＥＳルート参照）、ステップＡ５０に移行する。又、コマンドが格納されていない場合には（ステップＡ７０のＮＯルート参照）、処理を終了する。
図６に示す例においては、演算コア１２ｂは、ＯＳコア１１ｂによって管理される領域３１ｂを参照した結果、このキューにコマンドが格納されていなかったので、ダイ１０ａのＯＳコア１１ａにかかるキューにコマンドがあるか否かを確認している。なお、この図６に示す例においては、演算コア１２ｂが領域３１ａにアクセスした際には、既に演算コア１２ａによってこの領域３１に格納されていたコマンドが取得・削除されてしまっている。そこで、演算コア１２ｂは待機状態（アイドル状態）となり、次の割込通知が行なわれるまで待機する。
【００３７】
図２〜図６を用いて上述した例においては、演算コア１２がいずれもアイドル状態である場合にＯＳコア１１から割込み信号を受けた場合について示したが、次に、一方の演算コア１２がビジー状態である場合について説明する。
図７〜図９は実施形態の一例としてのマルチコアプロセッサにおいてＯＳコア１１ａから割込通知を受けた際の処理を説明するための図である。これらの図７〜図９は複数の演算コア１２ａ，１２ｂのうち演算コア１２ａがビジー状態である場合にＯＳコア１１ａから割込通知を受けた際の処理を説明するための図であり、演算コア１２ａ，１２ｂがＯＳコア１１ａから割込通知を受けた後の状態を示している。
【００３８】
なお、これらの図７〜図９に示す例においても、本来、領域３１やＬ２キャッシュに登録されているコマンドＣを、便宜上、ＯＳコア１１ａの近くに配置して示している。又、これらの図７〜図９においては、便宜上、ＯＳコア１１ａ，１１ｂ，演算コア１２ａ，１２ｂ以外の図示を省略している。
図７に示すように、ＯＳコア１１ａから割込通知を受けた演算コア１２ａ，１２ｂのうち、アイドル状態であった演算コア１２ｂは、すぐに自コアと同じダイ１０ｂ上のＯＳコア１１ｂのキューの参照を行なう。しかしながら、ここで、演算コア１２ａは、他のコマンドにより演算処理中（ビジー状態）であるので、この演算が完了するまで、すなわち、ビジー状態が解消するまでＯＳコア１１ａのキュー参照を保留する。
【００３９】
そして、図８に示すように、演算コア１２ａがキュー参照を保留している間に、演算コア１２ｂが、次にダイ１０ａ上のＯＳコア１１ａによって管理されるキュー（領域３１ａ）を参照する。
演算コア１２ｂは、領域３１ａからコマンドを取得するとともに、領域３１ａからその取得したコマンドを削除する。そして、演算コア１２ｂは、この取得したコマンドを処理する。
【００４０】
一方、実行中の演算が完了した演算コア１２ａは、同じダイ１０ａ上のＯＳコア１１ａのキューの参照を行なう。しかしながら、図９に示すように、演算コア１２ａが領域３１ａにアクセスした際には、この領域３１に格納されていたコマンドは、演算コア１２ｂによって既に取得・削除されてしまっている。
そこで、演算コア１２ａは、他のダイ１０ｂ上のＯＳコア１１ｂによって管理されるキュー（領域３１ｂ）を参照する。演算コア１２ａは、この他ダイ１０ｂのＯＳコア１１ｂによって管理されるキューにおいてもコマンドを見つけることができない場合には、待機状態となり、次の割込通知が行なわれるまで待機する。
【００４１】
なお、ＯＳコア１１は、演算コア１２の状態監視を行なうために、特定の演算コア１２の情報収集が必要な場合や、自コアと同じダイ１０上の演算コア１２がビジー状態である場合には、特定の演算コア１２に対してのみ割込通知を行なってもよい。
ここで、特定の演算コア１２の情報収集が必要な場合としては、例えば、システムの初期化時や、システム異常発生時におけるシステムのログ採取時が挙げられる。
【００４２】
システムの起動時（初期化処理時）においては、起動時専用のプロセスがＯＳコア１１により実行される。ＯＳコア１１は、この専用プロセスにおいて、特定の演算コア１２の情報を収集するために、その演算コア１２に対してのみ割込通知を行なう。
また、自コアと同じダイ１０上の演算コア１２がビジー状態である場合に、ＯＳコア１１が、アイドルな演算コア１２に対して、直接、割込通知を行なうことにより、全ての演算コア１２に対して割込通知を行なうことに比べて、バス１４におけるトラフィックを軽減することができる。この割り込み通知が行なわれた演算コア１２においては、例えば、先ず、自コアと同じダイ１０上のＯＳコア１１のキュー参照を行ない、このキューにおいてコマンドを取得することができなかった場合に、次に、他のダイ１０上のＯＳコア１１のキューを参照する。
【００４３】
例えば、演算コア１２が、全てのコアから参照可能なメモリ領域（例えばメモリ３０の所定の領域）に稼働率を書込み、ＯＳコア１１が、この稼働率を参照することにより、演算コア１２がビジー状態であるか否かを容易に把握することができる。
このように、実施形態の一例としてのマルチコアプロセッサによれば、各演算コア１２の状態を管理したり、演算コア１２に対してタスクを割り振るための管理や制御を行なう必要がない。これにより、ＣＰＵ１００の構成を簡素化することができ、製造コストを低減することができる。又、ＣＰＵ１００における負荷を軽減し、処理速度を高速化することもできる。
【００４４】
そして、開示のマルチコアプロセッサ，制御方法および情報処理装置は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態においては、ダイ１０を２つそなえるとともに、各ダイ１０にＯＳコア１１と演算コア１２とを１つずつそなえた例を示しているが、これに限定されるものではない。例えば、各ダイ１０にＯＳコア１１や演算コア１２を２以上そなえてもよく、又、ダイ１０において、ＯＳコア１１と演算コア１２とを異なる数そなえてもよい。又、これらのように構成されたダイ１０を３以上そなえて構成してもよい。
【００４５】
また、上述した実施形態においては、各ダイ１０にＬ２キャッシュ１３がそなえられた例を示しているが、これに限定されるものではない。例えば、Ｌ２キャッシュの他にＬ３キャッシュ等の他のキャッシュをそなえてもよく、又、Ｌ２キャッシュをそなえずに構成してもよい。更に、Ｌ２キャッシュ１３の配置も種々変形して実施することができる。
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００４６】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）  第１のタスクを処理する第１のプロセッサコアと、第２のタスクを処理する第２のプロセッサコアとが形成されたプロセッサダイを複数そなえたマルチコアプロセッサであって、
前記第１のプロセッサコアが、前記第１のタスクの処理に際して前記第２のタスクに関する処理要求を行なう際に、前記第１のプロセッサコアにより用いられるメモリ領域に前記第２のタスクに関する情報を格納するとともに、前記複数のプロセッサダイにそれぞれそなえられた各第２のプロセッサコアに対して割込通知を行ない、
前記割込通知を受けた前記第２のプロセッサコアが、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアに用いられる前記メモリ領域に対してそれぞれアクセスを行なうことを特徴とする、マルチコアプロセッサ。
【００４７】
（付記２）  前記割込通知を受けた第２のプロセッサコアが、タスクを処理中である場合には、前記タスクの終了後に、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してアクセスを行なうことを特徴とする、付記１記載のマルチコアプロセッサ。
（付記３）  前記割込通知を受けた第２のプロセッサコアが、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してアクセスを行なった結果、前記メモリ領域において前記第２のタスクに関する情報を取得することができなかった場合に、前記第２のプロセッサコアと異なる前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してアクセスを行なうことを特徴とする、付記１又は付記２記載のマルチコアプロセッサ。
【００４８】
（付記４）  前記第１のプロセッサコアが、前記第１のプロセッサコアと同一の前記プロセッサダイ上にそなえられたキャッシュに対しても、前記第２のタスクに関する情報を格納することを特徴とする、付記１〜付記３のいずれか１項に記載のマルチコアプロセッサ。
（付記５）  第１のタスクを処理する第１のプロセッサコアと、第２のタスクを処理する第２のプロセッサコアとが形成されたプロセッサダイを複数そなえたマルチコアプロセッサにおける制御方法であって、
前記第１のプロセッサコアが、
前記第１のタスクの処理に際して前記第２のタスクに関する処理要求を行なう際に、前記第１のプロセッサコアにより用いられるメモリ領域に前記第２のタスクに関する情報を格納する格納ステップと、
前記複数のプロセッサダイにそれぞれそなえられた各第２のプロセッサコアに対して割込通知を行なう通知ステップと、
前記第２のプロセッサコアが、
前記割込通知を受ける受信ステップと、
前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してそれぞれアクセスを行なうアクセスステップとをそなえることを特徴とする、制御方法。
【００４９】
（付記６）  前記第２のプロセッサコアが、
前記受信ステップの実施時においてタスクを処理中である場合には、前記タスクの終了後に、前記アクセスステップを実施することを特徴とする、付記５記載の制御方法。
（付記７）  前記第２のプロセッサコアが、
前記アクセスステップにより、前記第２のプロセッサコアと同一の前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してアクセスを行なった結果、前記メモリ領域において前記第２のタスクに関する情報を取得することができなかった場合に、前記第２のプロセッサコアと異なる前記プロセッサダイ上にそなえられた前記第１のプロセッサコアによって用いられる前記メモリ領域に対してアクセスを行なう外部アクセスステップをそなえることを特徴とする、付記５又は付記６記載の制御方法。
【００５０】
（付記８）  前記第１のプロセッサコアが、前記第１のプロセッサコアと同一の前記プロセッサダイ上にそなえられたキャッシュに対しても、前記第２のタスクに関する情報を格納するキャッシュ格納ステップをそなえることを特徴とする、付記５〜付記７のいずれか１項に記載の制御方法。
（付記９）  付記１〜付記４のいずれか１項に記載のマルチコアプロセッサをそなえたことを特徴とする、情報処理装置。
【図面の簡単な説明】
【００５１】
【図１】実施形態の一例としてのマルチコアプロセッサの構成を模式的に示す図である。
【図２】実施形態の一例としてのマルチコアプロセッサにおけるタスク処理手法を説明するためのフローチャートである。
【図３】実施形態の一例としてのマルチコアプロセッサにおけるＯＳコアおよび演算コアの処理を説明するための図である。
【図４】実施形態の一例としてのマルチコアプロセッサにおけるＯＳコアおよび演算コアの処理を説明するための図である。
【図５】実施形態の一例としてのマルチコアプロセッサにおけるＯＳコアおよび演算コアの処理を説明するための図である。
【図６】実施形態の一例としてのマルチコアプロセッサにおけるＯＳコアおよび演算コアの処理を説明するための図である。
【図７】実施形態の一例としてのマルチコアプロセッサにおいてＯＳコアから割込み通知を受けた際の処理を説明するための図である。
【図８】実施形態の一例としてのマルチコアプロセッサにおいてＯＳコアから割込み通知を受けた際の処理を説明するための図である。
【図９】実施形態の一例としてのマルチコアプロセッサにおいてＯＳコアから割込み通知を受けた際の処理を説明するための図である。
【符号の説明】
【００５２】
１０，１０ａ，１０ｂ    ダイ（プロセッサダイ）
１１，１１ａ，１１ｂ    ＯＳコア（第１のプロセッサコア）
１２，１２ａ，１２ｂ    演算コア（第２のプロセッサコア）
１３，１３ａ，１３ｂ    Ｌ２キャッシュ（キャッシュ）
１４    バス
２０    ＭＣＨ
２１    ＣＰＵバス
２２    メモリバス
３０    メモリ
３１ａ，３１ｂ    領域
【図１】
2010140146.tif 000003
【図２】
2010140146.tif 000004
【図３】
2010140146.tif 000005
【図４】
2010140146.tif 000006
【図５】
2010140146.tif 000007
【図６】
2010140146.tif 000008
【図７】
2010140146.tif 000009
【図８】
2010140146.tif 000010
【図９】
2010140146.tif 000011