(57)【要約】【課題】複数の演算装置を備える情報処理装置における演算装置間通信を効率よく行なう。【解決手段】第１の演算装置は、他の演算装置に受け渡すデータを複数の記憶領域２５のうちの第１の記憶領域２５に送信するデータ送信処理部１２と、データ送信処理部１２によるデータの送信に対応する割込みを、記憶領域２５を特定する識別情報とともに、データの送信先に対して発生させる割込み生成部１３とを備え、第２の演算装置は、割込みを受信すると、割込みと共に受信した識別情報に基づいて、どの演算装置からの要求であるかを特定する割込み処理部２３と、複数の記憶領域２５のうち、割込み処理部２３が特定した演算装置に対応する第１の記憶領域２５からデータを読み出すデータ受信部２２とを備える。【選択図】図１
2014048965.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算装置及び複数の記憶領域を有する情報処理装置において、
前記複数の演算装置のうちの第１の演算装置は、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信するデータ送信処理部と、
前記データ送信処理部によるデータの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる割込み生成部とを備え、
前記複数の演算装置のうちの第２の演算装置は、
前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定する割込み処理部と、
前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すデータ受信部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第１の演算装置が、当該第１の演算装置上で実行されるOperating System（ＯＳ）からのクロスコールを受信するクロスコール受信処理部を有し、
前記データ送信処理部が、前記クロスコール受信処理部が受信したクロスコールの送信先の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信し、
前記割込み生成部が、前記クロスコール受信処理部が受信したクロスコールの送信先の演算装置に対して前記割込みを発生させることを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記第２の演算装置が、前記データ受信部が前記第１の記憶領域から読み出したデータを前記クロスコールの送信先の演算装置が実行するＯＳに対応するＯＳ用記憶領域に格納するデータ格納処理部を備えることを特徴とする、請求項１又は２記載の情報処理装置。
【請求項４】
それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記複数のノードのうちの第１のノードにおいて、
前記第１の演算装置を有し、
前記割込み生成部が、前記データ送信処理部によるデータの送信に対応する割込みを、当該第１のノードを特定するノード識別情報とともに、前記データの送信先に対して発生させ、
前記複数のノードのうちの第２のノードにおいて、
前記複数のノードのそれぞれに対応した記憶領域と、前記第２の演算装置とを有し、
前記割込み処理部が、前記第１のノードから割込みを受信すると、前記割込みと共に受信した前記ノード識別情報に基づいて、どのノードからの要求であるかを特定し、
前記データ受信部が、複数のノードの各々に対応して備えられた複数の記憶領域のうち、前記割込み処理部が特定したノードに対応する前記第１の記憶領域から受信データを読み出すことを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記複数のノードをまたいでＯＳを管理するハイパーバイザが前記識別情報を有し、
前記ハイパーバイザが前記ＯＳからクロスコールを受信すると、該クロスコールの送信元演算装置及び送信先演算装置の各々において、前記ハイパーバイザが前記識別情報を参照してデータが格納された前記第１の記憶領域を判定することを特徴とする、請求項４記載の情報処理装置。
【請求項６】
ノード毎に異なる優先度が設定され、
前記ノード識別情報が、前記優先度を示す優先度情報を備えることを特徴とする請求項４又は５記載の情報処理装置。
【請求項７】
前記優先度情報が、第１の優先度を表す第１優先情報と、前記複数のノードのいずれに設定された前記第１の優先度よりも低い第２の優先度を表す第２優先情報とを有し、
前記第１の演算装置は、
前記第１優先情報と前記第２優先情報とのいずれかをランダムに選択する選択部を備え、
前記割込み生成部が、前記選択部によって選択された前記第１優先情報もしくは前記第２優先情報のいずれかを前記ノード識別情報として前記データの送信先に対して通知することを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記記憶領域において、
前記第１の演算装置から当該記憶領域のステータス変更のためのアクセスを行なう第１管理領域と、前記第２の演算装置がデータを取得するためのアクセスを行なう第２管理領域とを異なるキャッシュライン上に備えることを特徴とする請求項１〜７のいずれか１項に記載の情報処理装置。
【請求項９】
それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記複数のノードのうちの第１のノードにおいて、
前記第１の演算装置と、当該第１の演算装置に対応する記憶領域とを有し、
前記複数のノードのうちの第２のノードにおいて、
前記第２の演算装置を有し、
前記割込み処理部が、前記第１のノードから割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定し、
前記データ受信部が、複数の演算装置の各々に対応して備えられた複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域から受信データを読み出すことを特徴とする、請求項１記載の情報処理装置。
【請求項１０】
複数の演算装置及び複数の記憶領域を有する情報処理装置において、
前記複数の演算装置のうちの第１の演算装置が、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信するステップと、
前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させるステップと、
前記複数の演算装置のうちの第２の演算装置が、
前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定するステップと、
前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すステップとを備えることを特徴とする処理方法。
【請求項１１】
複数の演算装置及び複数の記憶領域を有するコンピュータにおいて、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信し、
前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる
処理を前記コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，処理方法，プログラムに関する。
【背景技術】
【０００２】
複数のCentral  Processing  Unit（ＣＰＵ）を備えるコンピュータシステムにおいて、これらの複数のＣＰＵ間でデータを受け渡す場合には、例えば、送信元のＣＰＵが送信先の共有メモリにデータを書き込んだ後に、送信先のＣＰＵに対して割り込みを発生して通知する。割り込みを受信したＣＰＵは、共有メモリにアクセスしてそのメモリに書き込まれたデータを読み出す。以下、このようなＣＰＵ間において行なわれるデータ通信をクロスコール（xcall）という場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−０８６６１５号公報
【特許文献２】特開平１１−１２０１５６号公報
【特許文献３】特開２００６−３０１８９４号公報
【特許文献４】特開昭６３−０５９６４９号公報
【特許文献５】特開２０００−０２９８５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＣＰＵを多数備える大規模なコンピュータシステムにおいては、ＣＰＵの数が多くなることにより、クロスコールに要する時間も増大する。Operating System（ＯＳ）がクロスコール送信要求を発行してから規定時間内にクロスコールが完了せず、ＯＳがタイムアウト（クロスコールタイムアウト）を検出し、異常終了する場合がある。従って、クロスコールを短時間で完了させることが望ましい。
【０００５】
例えば、複数のＣＰＵを備えたBuilding  Block（ＢＢ）を備えた情報処理装置において、これらのＢＢをまたぐＣＰＵ間でクロスコールを行なう際、送信先のＣＰＵにおいては、どのＢＢに含まれるＣＰＵからの割り込みかを効率よく判断できることが望ましい。又、複数のＢＢのＣＰＵから同一のＣＰＵに対してデータ送信を行なうクロスアクセス競合が生じる場合があるが、このような場合に、特定のＢＢの処理のみが優先されないようにすることが望ましい。
【０００６】
１つの側面では、本発明は、複数の演算装置を備える情報処理装置における演算装置間通信を効率よく行なうことを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００７】
このため、この情報処理装置は、複数の演算装置及び複数の記憶領域を有する情報処理装置において、前記複数の演算装置のうちの第１の演算装置は、他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に格納するデータ送信処理部と、前記データ送信処理部によるデータの格納に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる割込み生成部とを備え、前記複数の演算装置のうちの第２の演算装置は、前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定する割込み処理部と、前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すデータ受信部と、を備える。
【０００８】
また、この処理方法は、複数の演算装置及び複数の記憶領域を有する情報処理装置において、前記複数の演算装置のうちの第１の演算装置が、他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信するステップと、前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させるステップと、前記複数の演算装置のうちの第２の演算装置が、前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定するステップと、前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すステップとを備える。
【０００９】
さらに、このプログラムは、複数の演算装置及び複数の記憶領域を有するコンピュータにおいて、他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信し、前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる処理を前記コンピュータに実行させる。
【発明の効果】
【００１０】
一実施形態によれば、複数の演算装置を備える情報処理装置における演算装置間通信を効率よく行なうことができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態の一例としての情報処理装置の機能構成を模式的に示す図である。
【図２】第１実施形態の一例としての情報処理装置のハードウェア構成を例示する図である。
【図３】第１実施形態の一例としての情報処理装置のハードウェア構成の他の例を示す図である。
【図４】第１実施形態の一例としての情報処理装置のメモリの使用例を示す図である。
【図５】第１実施形態の一例としての情報処理装置のバッファ領域に書き込まれるデータ構成を例示する図である。
【図６】第１実施形態の一例としての情報処理装置における優先度情報を例示する図である。
【図７】実施形態の一例としての情報処理装置におけるクロスコール処理の流れを示す図である。
【図８】第１実施形態の一例としての情報処理装置における送信側ＣＰＵにおける処理を説明するフローチャートである。
【図９】第１実施形態の一例としての情報処理装置における受信側ＣＰＵにおける処理を説明するフローチャートである。
【図１０】第１実施形態の一例としての情報処理装置におけるＣＰＵ間のデータの受け渡し手法を説明する図である。
【図１１】第２実施形態の一例としての情報処理装置におけるＣＰＵ間のデータの受け渡し手法を説明する図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本情報処理装置，処理方法及びプログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態及び各変形例を組み合わせる等）して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１３】
（Ａ）第１実施形態
図１は第１実施形態の一例としての情報処理装置１の機能構成を模式的に示す図、図２はそのハードウェア構成を例示する図である。
第１実施形態の一例として情報処理装置１は、図２に示すように、複数（図２に示す例では、＃０〜＃１５の１６個）のビルディングブロック（Building Block：ＢＢ）１００を備える。これらの複数のＢＢ＃０〜＃１５は、バス５０を介して相互に通信可能に接続されている。
【００１４】
ＢＢはハードウェア構成単位の一つであり、ノード（コンピュータノード）を構成する。これらの複数のＢＢ１００は例えばシステムボードなどであり、互いに同様の構成を備える。図２中においては、便宜上、ＢＢ＃０のハードウェア構成のみを図示している。ＢＢあるいはノードの構成は図２の構成に限定されるものではなく、種々の構成を取り得る。例えば、サービスプロセッサ１０５が無い構成であってもよいし、バスインタフェース１０４に接続される複数のＣＰＵ１０１や複数のメモリ１０２は、１つのシステムボード上にあってもよいし、ＣＰＵやメモリを実装した回路基板を複数含む機能ブロックをＢＢあるいはノードとすることもできる。
【００１５】
なお、以下、ＢＢを示す符号としては、複数のＢＢのうち１つを特定する必要があるときには符号＃０〜＃１５を用いるが、任意のＢＢを指すときには符号１００を用いる。
ＢＢ１００は、図２に示すように、サービスプロセッサ１０５，バスインタフェース１０４，１以上（図２に示す例では＃０〜＃３の４つ）のＣＰＵ１０１，１以上（図２に示す例では４つ）のMemory Access Controller（ＭＡＣ）１０３及び１以上（図２に示す例では４つ）のメモリ１０２を備える。
【００１６】
ＣＰＵ１０１及びメモリ１０２は、それぞれＭＡＣ１０３を介してバスインタフェース１０４に接続されている。又、バスインタフェース１０４は、バス５０と通信可能に接続されている。バス５０は、例えば、クロスバーである。ただし、バス５０はこれに限定されるものではなく、例えば、Peripheral Component Interconnect（ＰＣＩ）バス等の他のバスアーキテクチャであってもよい。
【００１７】
バスインタフェース１０４は、バス５０の規格に準じたインタフェースであり、例えば、クロスバーインタフェースである。
サービスプロセッサ１０５は、ＢＢ１００の管理を行なう処理装置であり、例えば、ＢＢ１００内におけるエラー監視を行ない、エラー発生時に外部への通知やリカバリ処理等を行なう。
【００１８】
ＭＡＣ１０３は、メモリ１０２へのデータアクセスを制御する制御装置であり、ＣＰＵ１０１等からのデータアクセス要求に応じてメモリ１０２へのデータの書き込みや読み出しを行なう。
メモリ１０２はＲＯＭ及びＲＡＭを含む記憶装置である。メモリ１０２のＲＯＭには、通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ１０２上のソフトウェアプログラムは、ＣＰＵ１０１に適宜読み込まれて実行される。又、メモリ１０２のＲＡＭは、一次記憶メモリあるいはワーキングメモリとして利用される。
【００１９】
なお、メモリ１０２に対しては、同一のＭＡＣ１０３に接続されたＣＰＵ１０１だけでなく、他のＣＰＵ１０１からもデータの書き込みや読み出しが行なわれる。又、メモリ１０２に対しては、同一のＢＢ１００に備えられたＣＰＵ１０１だけでなく、他のＢＢ１００に備えられたＣＰＵ１０１からもデータの書き込みや読み出しが行なわれる。そして、本情報処理装置１においては、後述の如く、ＣＰＵ１０１間でデータの受け渡しを行なう際に、このメモリ１０２を介してデータの受け渡しが行なわれる。すなわち、メモリ１０２は、複数のＣＰＵ１０１から共有して使用される共有メモリとして機能する。
【００２０】
また、ＣＰＵ１０１は、同一のＭＡＣ１０３に接続されたメモリ１０２を優先して使用するものとする。以下、このＣＰＵ１０１と同一のＭＡＣ１０３に接続されたメモリ１０２を優先メモリ１０２という場合がある。
図３は第１実施形態の一例としての情報処理装置のハードウェア構成の他の例を示す図である。この図３に示す例においては、各ＢＢ１００がＣＰＵ１０１，ＭＡＣ１０３及びメモリ１０２を２つずつ備えている。又、この図３に示す例においては、情報処理装置１は、ｎ＋１個（ただしｎは０以上の整数）のＢＢ＃０〜＃ｎを備える。複数のＢＢをいくつかのパーティションに分割することもできる。ここで、パーティションとは、同一のＯＳが動作し、動作しているＯＳから見て１つのシステムとして動作するビルディングブロックの群を示す。例えば、図３に示す例においては、ＢＢ＃０とＢＢ＃１がパーティション＃１として動作し、ＢＢ＃２〜ＢＢ＃４がパーティション＃２として動作し、又、ＢＢ＃ｎがパーティション＃ｍ（ただしｍは１以上の自然数）として動作する。ここで、パーティション＃１に含まれるＢＢが動作させるＯＳは、ＢＢ＃０、ＢＢ＃１が１つのシステムとして動作していると識別し、パーティション＃２に含まれるＢＢが動作させるＯＳは、ＢＢ＃２〜ＢＢ＃４が１つのシステムとして動作していると識別する。同様に、パーティション＃ｍに含まれるＢＢが動作させるＯＳは、ＢＢ＃ｎが１つのシステムとして動作していると識別する。
【００２１】
図４は第１実施形態の一例としての情報処理装置１のメモリ１０２の使用例を示す図である。この図４に示すように、メモリ１０２には、ＢＢ１００毎に設けられた受信バッファ領域２５（２５−０〜２５−１５）とＯＳ毎に設けられたＯＳ用領域１０２３とが備えられ、更に、優先度情報１０２１が格納される領域１０２４が備えられている。以下、第１実施形態では特に断らない限り、受信バッファ領域をバッファ領域、あるいは単にバッファとする。
【００２２】
ＯＳ用領域１０２３は、ＯＳが使用するデータを格納する領域である。ＢＢ１００において複数のＯＳを実行する場合には、図４に示すように、これらのＯＳ（図４に示す例では０Ｓ＃０〜＃３）にそれぞれ対応する複数のＯＳ用領域１０２３が備えられる。すなわち、ＯＳ用領域１０２３は、ＢＢ１００で実行されるＯＳ毎に備えられる。
このＯＳ用領域１０２３には、例えば、後述するデータ格納処理部２１により、バッファ領域２５から読み出されたデータのコピーが格納される。ＯＳはこれらの複数のＯＳ用領域１０２３のうち、自身が使用するＯＳ用領域１０２３からデータを読み出して使用する。
【００２３】
バッファ領域２５は、ＣＰＵ１０１に受け渡されるデータを格納する領域であり、バッファ領域２５には、他のＣＰＵ１０１から受け渡されるデータが格納される。
本第１実施形態においては、データの送信先のＣＰＵ１０１と同一のＭＡＣ１０３に接続されたメモリ１０２（優先メモリ１０２）の一部の記憶領域が、このバッファ領域２５として機能する。以下、複数のＣＰＵ１０１間でデータの受け渡しを行なうに際して、データを送信する側のＣＰＵ１０１を送信元ＣＰＵ１０１といい、データを受信する側のＣＰＵ１０１を送信先ＣＰＵ１０１という。
【００２４】
バッファ領域２５は、本情報処理装置１に備えられるＢＢ１００にそれぞれ対応して備えられる。例えば、ＢＢ＃０に対応してバッファ領域２５−０が備えられ、ＢＢ＃１に対応してバッファ領域２５−１が備えられる。同様に、ＢＢ＃２〜＃１５に対応してバッファ領域２５−２〜２５−１５がそれぞれ備えられる。
なお、バッファ領域を示す符号としては、複数のバッファ領域のうち１つを特定する必要があるときには符号２５−０〜２５−１５を用いるが、任意のバッファ領域を指すときには符号２５を用いる。バッファ領域２５はＢＢ１００毎に備えられる。
【００２５】
図５は第１実施形態の一例としての情報処理装置１のバッファ領域２５に書き込まれるデータ構成を例示する図である。
各バッファ領域２５には、図５に示すように、第１データ２５１ａと第２データ２５１ｂとが格納される。
第１データ２５１ａは、そのバッファ領域２５の状態を示すステータス（status）２５１０と別途割り当て可能な領域(reserved area)を備える。ステータス２５１０としては、“free”，“ready”及び“busy”のいずれかを示す情報が格納される。
【００２６】
ここで、“free”は、バッファ領域２５がロックされていない状態であり、バッファ領域２５にデータの書き込みを行なうためにロックして使用する権限を獲得できる状態にあることを示す。“ready”は、バッファ領域２５に対してデータを書き込む権限を獲得済みであり（ロック状態）、データの書き込みを開始できる状態にあることを示す。“busy”は、バッファ領域２５にデータを書き込み中であることを示す。このステータス２５１０の情報は、例えば、後述するデータ送信処理部１２により更新される。
【００２７】
第２データ２５１ｂは、データ２５２とデータレディ（data_ready）２５２０と別途割り当て可能な領域(reserved area)とを備える。データ２５２は、他のＣＰＵ１０１から受け渡されるデータである。データレディ２５２０はデータ２５２の状態を示し、例えば、“false”及び“true”のいずれかを示す情報が格納される。ＣＰＵ１０１間でデータの受け渡しを行なうに際して、送信先ＣＰＵ１０１がバッファ領域２５を開放するためにこのデータレディ２５２０アクセスする。なお、データレディ２５２０は公知であり、その詳細な説明は省略する。
【００２８】
第１データ２５１ａには、ＣＰＵ１０１間でデータの受け渡しを行なうに際して、送信元ＣＰＵ１０１がアクセスする情報であるステータス２５１０が格納される。一方、第２データ２５１ｂには、ＣＰＵ１０１間でデータの受け渡しを行なうに際して、送信先ＣＰＵ１０１がアクセスする情報であるデータ２５２及びデータレディ２５２０が格納される。
【００２９】
そして、第１データ２５１ａ及び第２データ２５１ｂは、それぞれＣＰＵ１０１のキャッシュラインサイズと同一サイズとして構成されている。すなわち、第１データ２５１ａと第２データ２５１ｂとはキャッシュ上の別ラインとなるように配置されている。
これにより、ＣＰＵ１０１間でデータの受け渡しを行なうに際して、送信元ＣＰＵ１０１によるステータス２５１０へのアクセスと、送信先ＣＰＵ１０１によるデータ２５２や、データレディ２５２０へのアクセスとが独立して行なわれる。
【００３０】
例えば、送信元ＣＰＵ１０１は、バッファ領域２５にデータの書き込みを行なうためにロックを取り、ステータス２５１０を “free”から“busy”に変更する。
また、バッファ領域２５へのデータの格納が完了すると、送信元ＣＰＵ１０１は、ステータス２５１０を “busy”から“ready”に変更する。又、送信元ＣＰＵ１０１は、データレディ２５２０を“false”から“true”に変更し、送信先ＣＰＵ１０１に割込みをかける（xcall）。送信先ＣＰＵ１０１は、空割り込み対策として、データレディ２５２０が“true”になっていることを確認する。
【００３１】
そして、送信先ＣＰＵ１０１は、バッファ領域２５からデータの読み出しが完了すると、ステータス２５１０を“busy”から“free”に変更し、バッファ領域２５を開放する。
このように、送信元ＣＰＵ１０１から送信先ＣＰＵ１０１にバッファ領域２５を介してデータの受け渡しを行なう際に、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１とによる同一キャッシュラインへの同時アクセスが防止される。これにより、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１との間において、バッファ領域２５へアクセスするためのロック競合の発生を抑止することができる。すなわち、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１とによるフォールスシェアリング（false sharing）を回避することができ、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１とによるロック競合による処理遅延を緩和することができる。
【００３２】
また、第２データ２５１ｂにデータ２５２とデータレディ２５２０とを備えることにより、キャッシュ上の同一ラインにデータ２５２とデータレディ２５２０とが配置され、送信先ＣＰＵ１０１は一度のアクセスでこれらのデータ２５２とデータレディ２５２０とを取得することができる。これにより、バッファ領域２５へのアクセス頻度を低減することもできる。
【００３３】
優先度情報１０２１は、本情報処理装置１に備えられた各ＢＢ１００の優先順位を示す情報である。
図６は第１実施形態の一例としての情報処理装置１における優先度情報１０２１を例示する図である。
本情報処理装置１においては、図６に例示するように、予め、各ＢＢ１００に対して互いに重複することの無いユニークな優先度がそれぞれ設定されている。又、各ＢＢ１００には、それぞれ２つ（２種類）の優先度が設定されている。
【００３４】
図６に示す例においては、ＢＢ＃０〜＃１５に対して、整数０〜１５が第１の優先度としてそれぞれ設定されるとともに、整数３１〜１６が第２の優先度としてそれぞれ設定されている。そして、図６に例示するこれらの優先度０〜３１において、数値が大きい程、優先順位が高いものとする。以下、各ＢＢ１００に設定された優先度のうち、優先度０〜１５を低側の優先度（第１優先情報）といい、優先度１６〜３１を高側の優先度（第２優先情報）という。高側の優先度１６〜３１は、低側の優先度０〜１５のいずれよりも高い。
【００３５】
例えば、ＢＢ＃０には、最も優先度が低いことを示す優先度０と最も優先度が高いことを示す優先度３１との２つの優先度が対で設定されており、ＢＢ＃３には、低側の優先度３と高側の優先度２８との２つの優先度が対で設定されている。
各ＢＢ１００に設定されたこれらの２つの優先度は、後述する処理優先度設定部１３によりランダムにいずれか一方が選択される。以下、処理優先度設定部１３によって選択された優先度を割り込みレベルという場合がある。
【００３６】
そして、前述の如く、これらの各ＢＢ１００に設定される優先度は、各ＢＢ１００に対して互いに重複することの無いユニークな値として設定される。これにより、優先度からＢＢ１００を特定することができる。すなわち、優先度はノードを特定するノード識別情報として使用される。
また、図４に示したように、優先メモリ１０２においては、ＢＢ１００にそれぞれ対応してバッファ領域２５が備えられている。これにより、優先度は間接的にバッファ（記憶領域）２５を特定する識別情報として機能する。
【００３７】
また、メモリ１０２の一部の記憶領域は、図１に示す割込み優先順位キュー２４としても用いられる。割込み優先順位キュー２４は、前述した優先度情報１０２１の各優先度に対応する複数のキューを備える。図１に示す例においては、割込み優先順位キュー２４は、図６に示す優先度情報１０２１の優先度０〜３１に対応して、３２個のキューを備える。図６中においては、割込み優先順位キュー２４の各キューに、優先度０〜３１に対応する０〜３１のいずれかの数値を付して示している。割込み優先順位キュー２４の各キューは割り込みレベルに対応する。
【００３８】
割込み優先順位キュー２４の各キューには、後述する処理優先度設定部１３によりフラグ（例えば“１”）が設定される。
割込み優先順位キュー２４の各キューには優先順位が設定されており、本実施形態においては、処理優先度設定部１３によりフラグが設定されたキューのうち、大きい数値が設定されたキューが後述する割込み処理部２３により優先して処理される。
【００３９】
なお、割込み優先順位キュー２４としては、メモリ１０２の一部の記憶領域を用いることに限定されるものではなく、他の種々の記憶装置を用いて実現してもよい。
ＣＰＵ１０１は、種々の制御や演算を行なう演算装置であり、メモリ１０２に格納されたＯＳや制御プログラム（ハイパーバイザ（Hypervisor：ＨＶ））を実行することにより、種々の機能を実現する。
【００４０】
ハイパーバイザは、コンピュータの仮想化技術のひとつである仮想機械（バーチャルマシン）を実現するための制御プログラムであり、複数のＢＢ１００をまたいでＯＳ（仮想ＯＳ）を管理する。
本情報処理装置１においては、各ＣＰＵ１０１は他のＣＰＵ１０１に対してデータを送信する送信元ＣＰＵ１０１として機能するとともに、他のＣＰＵ１０１から送信されたデータを受信する送信先ＣＰＵ１０１としても機能する。
【００４１】
ＣＰＵ１０１は、送信元ＣＰＵ１０１として機能する場合においては、図１に示すように、クロスコール受信処理部１１，データ送信処理部１２，処理優先度設定部１３及び割込み生成部１４として機能する。又、ＣＰＵ１０１は、送信先ＣＰＵ１０１として機能する場合においては、図１に示すように、割込み処理部２３，データ受信処理部２２及びデータ格納処理部２１として機能する。
【００４２】
ＣＰＵ１０１は、メモリ１０２上に制御プログラムとして展開されたハイパーバイザを実行することにより、クロスコール受信処理部１１，データ送信処理部１２，処理優先度設定部１３，割り込み生成部１４，割込み処理部２３，データ受信処理部２２及びデータ格納処理部２１として機能する。すなわち、本第１実施形態の情報処理装置１においては、クロスコール受信処理部１１，データ送信処理部１２，処理優先度設定部１３，割り込み生成部１４，割込み処理部２３，データ受信処理部２２及びデータ格納処理部２１はハイパーバイザの機能として実現される。
【００４３】
なお、これらのクロスコール受信処理部１１，データ送信処理部１２，処理優先度設定部１３，割込み生成部１４，割込み処理部２３，データ受信処理部２２及びデータ格納処理部２１としての機能を実現するための制御プログラム（ハイパーバイザ）は、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等），ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供される。そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
【００４４】
クロスコール受信処理部１１，データ送信処理部１２，処理優先度設定部１３，割込み生成部１４，割込み処理部２３，データ受信処理部２２及びデータ格納処理部２１としての機能を実現する際には、内部記憶装置（本実施形態ではメモリ１０２）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ１０１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
【００４５】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、情報処理装置１もしくはＢＢ１００がコンピュータとしての機能を有しているのである。
【００４６】
クロスコール受信処理部１１は、ＯＳからのクロスコール送信要求を受信する。
データ送信処理部１２は、送信先ＣＰＵ１０１に受け渡すデータを送信する。具体的には、データ送信処理部１２は、送信先ＣＰＵ１０１に対応する優先メモリ１０２において、当該送信元ＣＰＵ１０１が備えられるＢＢ１００に対応するバッファ領域２５にデータを書き込む。
【００４７】
また、データ送信処理部１２はバッファ領域２５のステータス２５１０等を更新する。例えば、データ送信処理部１２は、バッファ領域２５にデータを書き込む際には、先ず、対象のバッファ領域２５のロックを獲得してバッファ領域２５のステータス２５１０を“free”から“busy”に変更する。又、データ送信処理部１２は、バッファ領域２５にデータを書き終えると、データレディ２５２０を“false”から“true”に変更する。
【００４８】
処理優先度設定部１３は、クロスコール受信処理部１１がＯＳから受信したクロスコール送信要求に基づき、送信先ＣＰＵ１０１を決定する。なお、この送信先ＣＰＵ１０１の決定は既知の手法により実現でき、その詳細な説明は省略する。又、処理優先度設定部１３は、例えば優先度情報１０２１を参照して、自ＢＢ１００に予め割り当てられている複数（本実施形態では２つ）の優先度からランダムに１つの優先度を選択する。すなわち、割り込みレベルを設定する。
【００４９】
割込み生成部１４は、前述したデータ送信処理部１２が送信先ＣＰＵ１０１に関するバッファ領域２５にデータを送信（格納）し、バッファ領域２５のステータス２５１０等を更新すると、送信先ＣＰＵ１０１に対して割込み通知を行なう。
割込み生成部１４は、処理優先度設定部１３が選択した優先度を伴う割込み通知を送信先ＣＰＵ１０１に対して行なう。具体的には、割込み生成部部１４は、例えば、送信先ＣＰＵ１０１に対応する優先メモリ１０２の割込み優先順位キュー２４のキューのうち、処理優先度設定部１３が選択した優先度に対応するキューにフラグ“１”を設定する。
【００５０】
送信先ＣＰＵ１０１において、割込み処理部２３は、送信元ＣＰＵ１０１（割込み生成部１４）から割り込みが行なわれ、割込み優先順位キュー２４にフラグ“１”が設定されると、いずれのＢＢ１００から入力された割り込み処理依頼であるかを特定する。具体的には、割込み処理部２３は、割込み優先順位キュー２４におけるフラグが設定されたキューがいずれの割込みレベル（優先度）に対応するものであるかを判断する。
【００５１】
割込み処理部２３は、フラグが設定されたキューに対応する優先度を特定し、更に、その特定した優先度に対応するＢＢ１００を特定する。割込み処理部２３は、特定したＢＢ１００に対応するバッファ領域２５をデータ受信処理部２２に通知する。
データ受信処理部２２は、割込み処理部２３によって通知されたバッファ領域２５を参照し、データ２５２においてデータの書き込みが完了していることを確認する。具体的には、データ受信処理部２２は、対象のバッファ領域２５のステータス２５１０に“ready”が設定されているか否かを確認し、“ready”が設定されている場合に、データの書き込みが完了していると判断する。
【００５２】
データ受信処理部２２は、データ送信処理部１２によりバッファ領域２５へのデータの書き込みが完了したことを確認すると、その特定されたバッファ領域２５のデータ２５２からデータを読み出す。さらにデータ格納処理部２１は、バッファ領域２５から読み出したデータのコピーを、送信先ＣＰＵ１０１が実行するＯＳに対応するＯＳ用領域１０２３に格納する。その後、データ格納処理部２１は、処理対象のバッファ領域２５のデータレディ２５２０にアクセスし、バッファ領域２５を解放する。なお、ＯＳ用領域１０２３に複写されたデータはＯＳにより処理される。
【００５３】
上述の如く構成された第１実施形態の一例としての情報処理装置１における、送信側ＣＰＵ１０１における処理を、図７を参照しながら、図８に示すフローチャート（ステップＡ１〜Ａ６）に従って説明する。
なお、図７は実施形態の一例としての情報処理装置１におけるクロスコール処理の流れを示す図である。この図７中においては、図中左側に送信元ＣＰＵ１０１であるＣＰＵ＃０Ａを、又、図中右側に、送信先ＣＰＵ１０１であるＣＰＵ＃２Ａを示している。
【００５４】
送信元ＣＰＵ１０１において、先ず、クロスコール受信処理部１１がＯＳからクロスコールを受信する（ステップＡ１；図７の符号Ｆ１参照）。
ステップＡ２において、データ送信処理部１２は、送信先ＣＰＵ１０１に対応する優先メモリ１０２における、当該送信元ＣＰＵ１０１のＢＢ１００に対応するバッファ領域２５が空いているか否かを確認する。具体的には、データ送信処理部１２は、ステータス２５１０に“free”が格納されているか否かを確認し、ステータス２５１０が“free”ではない場合には（ステップＡ２のＮＯルート参照）、ステップＡ２を繰り返し行なう。
【００５５】
ステータス２５１０が“free”である場合には（ステップＡ２のＹＥＳルート参照）、データ送信処理部１２は、バッファ領域２５のロックを獲得して（図７の符号Ｆ２参照）、バッファ領域２５のステータス２５１０を“free”から“busy”に変更する（ステップＡ３；図７の符号Ｆ３参照）。
そして、ステップＡ４において、データ送信処理部１２は、送信先ＣＰＵ１０１のバッファ領域２５にデータ２５２を書き込んで更新する（図７の符号Ｆ４参照）。バッファ領域２５へのデータの格納が完了すると、ステップＡ５において、データ送信処理部１２は、バッファ領域２５のステータス２５１０を“busy”から“ready”に変更して（図７の符号Ｆ５参照）、バッファ領域２５の状態を変更する（図７の符号Ｆ６参照）。
【００５６】
処理優先度設定部１３は、自ＢＢ１００に予め割り当てられている複数（本実施形態では２つ）の優先度からランダムに１つの優先度を選択し、割り込みのレベルを設定する（図７の符号Ｆ７参照）。
ここで、ＢＢ１００毎に高／低２種類の優先度を用意しておき、処理優先度設定部１３がこれらの２種類の優先度のうち１の優先度をランダムに選択することにより、特定の送信元ＣＰＵ１０１の処理が優先して実行されることがなく、複数のＢＢ１００から送信されたデータを均等に処理することができる。
【００５７】
そして、処理優先度設定部１３は、この選択した優先度を伴う割込み通知を送信先ＣＰＵ１０１に対して行なう（ステップＡ６）。これにより、ハードウェアにより、送信先ＣＰＵ１０１に割り込みが通知される（図７の符号Ｆ８参照）。処理優先度設定部１３は、送信先ＣＰＵ１０１に対応する優先メモリ１０２の割込み優先順位キュー２４のキューのうち、選択した優先度に対応するキューにフラグを設定し、処理を終了する。
【００５８】
次に、第１実施形態の一例としての情報処理装置１における、受信側ＣＰＵ１０１における処理を、図７を参照しながら、図９に示すフローチャート（ステップＢ１〜Ｂ５）に従って説明する。
ステップＢ１において、送信先ＣＰＵ１０１が送信元ＣＰＵ１０１からの割込みを受信すると（図７の符号Ｆ９参照）、送信先ＣＰＵ１０１において、割込み処理部２３が、割込み優先順位キュー２４を参照して、いずれのＢＢ１００から入力された割り込み処理依頼であるかを特定する。すなわち、割込み処理部２３は、フラグが設定されたキューに対応する優先度を特定し、更に、その特定した優先度に対応するＢＢ１００を特定する。
【００５９】
ステップＢ２において、データ受信処理部２２は、割込み処理部２３によって通知されたバッファ領域２５を参照して、データの書き込みが完了していることを確認する（図７の符号Ｆ１０参照）。具体的には、データ受信処理部２２は、ステータス２５１０に“ready”が格納されているか否かを確認し、ステータス２５１０が“ready”ではない場合には（ステップＢ２のＮＯルート参照）、ステップＢ２を繰り返し行なう。
【００６０】
送信先ＣＰＵ１０１においては、割込み優先順位キュー２４の優先度により、どのＢＢ１００に対応するバッファ領域２５にデータが格納されているかを特定することができる。送信先ＣＰＵ１０１において、データ受信処理部２２が、対象のＢＢ１００に対応するバッファ領域２５のステータス２５１０だけをチェックすればよく、短時間で確認することができ送信先ＣＰＵ１０１による読み出し処理を高速化することができる。
【００６１】
ステータス２５１０が“ready”である場合には（ステップＢ２のＹＥＳルート参照）、ステップＢ３において、データ格納処理部２１は、バッファ領域２５から読み出したデータのコピーをＯＳ用領域１０２３に格納する。その後、データ格納処理部２１は、ステップＢ４において、バッファ領域２５のステータス２５１０を“ready”から“free”に変更し、バッファ領域２５を解放する（図７の符号Ｆ１２参照）。その後、ステップＢ５において、クロスコールの受信を完了し（図７の符号Ｆ１３参照）、処理を終了する。
【００６２】
図１０は第１実施形態の一例としての情報処理装置１におけるＣＰＵ１０１間のデータの受け渡し手法を説明する図である。
この図１０に示す例においては、ＢＢ＃０には優先度０，３１が設定されており、ＢＢ＃１には優先度１，３０が設定されている。
また、ＢＢ＃０においては、ＣＰＵ＃０Ａ，＃０Ｂ，＃０ＣがそれぞれＢＢ＃２のＣＰＵ＃２Ａにデータを受け渡そうとしており、これらの内、ＣＰＵ＃０ＡがＢＢ＃２に備えられたＢＢ＃０用のバッファ領域２５−０のロックを獲得している。
【００６３】
また、ＣＰＵ＃０Ａは、ＢＢ＃０に予め設定されている優先度“０”，“３１”からランダムにいずれかの優先度を選択し、この選択した優先度を伴う割込み通知をＣＰＵ＃２Ａに対して行なう。
なお、ロックを獲得できなかったＣＰＵ＃０Ｂ，＃０Ｃは、それぞれバッファ領域２５−０のロックが取れるまで、ステータス２５１０へのアクセスを繰り返し行なう。
【００６４】
本情報処理装置１においては、ＣＰＵ＃２ＡはＢＢ１００毎にバッファ領域２５を備えている。これにより、ＣＰＵ＃０ＡがＢＢ＃０用のバッファ領域２５−０のロックを獲得しているにもかかわらず、ＢＢ＃１のＣＰＵ＃１Ａは、ＢＢ＃２に備えられたＢＢ＃１用のバッファ領域２５−１のロックを獲得することができる。すなわち、ＢＢ＃１のＣＰＵ＃１Ａは、ＢＢ＃０のＣＰＵ＃０Ｂ，＃０Ｃと競合することなく、バッファ領域２５―１のロックを取ることができる。
【００６５】
ＣＰＵ＃１Ａは、ＢＢ＃１に予め設定されている優先度“１”，“３０”からランダムにいずれかの優先度を選択し、この選択した優先度を伴う割込み通知をＣＰＵ＃２Ａに対して行なう。
ＢＢ＃２においては、他のＣＰＵ１０１からクロスコールの割り込み通知を受信すると、通知された優先度を参照することにより、いずれのＢＢ１００に対応するバッファ領域２５が更新されたかを知ることができる。
【００６６】
すなわち、ＢＢ＃２において、ＣＰＵ＃２Ａは、クロスコールの割り込み通知により通知された優先度が“０”もしくは“３１”の場合には、ＢＢ＃０に対応するバッファ領域２５―０のデータを処理する。同様に、ＣＰＵ＃２Ａは、クロスコールの割り込み通知により通知された優先度が“１”もしくは“３０”の場合には、ＢＢ＃１に対応するバッファ領域２５―１のデータを処理する。
【００６７】
このように、ＣＰＵ＃２Ａは、通知された優先度に対応するバッファ領域２５のステータス２５１０だけを確認すればよく、バッファ領域２５からのデータの読み出しを短時間で行なうことができ、クロスコール処理を高速化することができる。
このように、第１実施形態の一例としての情報処理装置１によれば、送信先ＣＰＵ１０１が、クロスコールの割り込み通知により通知された優先度を参照することにより、どのＢＢ１００からの割り込みかを特定できる。これにより、バッファ領域２５からのデータの読み出しを短時間で行なうことができ、クロスコール処理を高速化することができる。
【００６８】
また、異なるＢＢ１００からそれぞれ行なわれるクロスコールについて、送信先ＣＰＵ１０１のバッファ領域２５への各ＢＢ１００の送信元ＣＰＵ１０１によるクロスコールアクセス競合を回避することができる。
このように、ＣＰＵ１０１間のアクセス競合によるＣＰＵ通信の処理遅延を解消することができ、大規模構成でのＣＰＵ間通信の高速化を実現することができる。これにより、クロスコールタイムアウトの発生を抑止し、装置の信頼性を向上させることができる。
【００６９】
また、各ＢＢ１００に対して複数の優先度（第１の優先度及び第２の優先度）をもたせ、処理優先度設定部１３がこれらの優先度からランダムに選択した優先度をクロスコールの割り込み通知により送信先ＣＰＵ１０１に通知する。これにより、常に一部のＢＢ１００の処理が優先されることを回避することができ、特定のＢＢ１００からの処理が常に時間がかかるという事態の発生を抑止することができる。
【００７０】
さらに、バッファ領域２５において、第１データ２５１ａと第２データ２５１ｂとはキャッシュ上の別ラインとなるように配置されている。そして、第１データ２５１ａにステータス２５１０を備え、第２データ２５１ｂにデータ２５２及びデータレディ２５２０を備える。
これにより、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１とによる同一キャッシュラインへの同時アクセスが防止され、バッファ領域２５へアクセスするためのロック競合の発生を抑止することができる。すなわち、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１とによるフォールスシェアリングを回避することができ、送信元ＣＰＵ１０１と送信先ＣＰＵ１０１とによるロック競合による処理遅延を緩和することができる。
【００７１】
また、第２データ２５１ｂにデータ２５２とデータレディ２５２０とを備えることにより、キャッシュ上の同一ラインにデータ２５２とデータレディ２５２０とが配置され、送信先ＣＰＵ１０１は一度のアクセスでこれらのデータ２５２とデータレディ２５２０とを取得することができる。これにより、バッファ領域２５へのアクセス頻度を低減することもできる。
【００７２】
（Ｂ）第２実施形態
上述した第１実施形態の情報処理装置１においては、送信先ＣＰＵ１０１の優先メモリ１０２において、各ＢＢ１００毎にバッファ領域２５を備えているがこれに限定されるものではない。
本第２実施形態の情報処理装置１においては、送信元ＣＰＵ１０１の各優先メモリ１０２にそれぞれバッファ領域２５を備え、送信元ＣＰＵ１０１は、送信先ＣＰＵ１０１に受け渡すデータを、当該送信元ＣＰＵ１０１が管理するバッファ領域２０５に格納する。なお、その他の部分は第１実施形態の情報処理装置１と同様に構成されている。つまり、第１実施形態は送信先にバッファ領域があるのに対し、第２実施形態は送信元にバッファ領域がある例として以下に説明する。
【００７３】
本第２実施形態の情報処理装置１において、送信元ＣＰＵ１０１から送信先ＣＰＵ１０１にデータを受け渡す場合には、送信元ＣＰＵ１０１において、データ送信処理部１２は、送信元ＣＰＵ１０１のバッファ領域２５のデータ２５２に送信データを書き込んで更新する。
図１１は第２実施形態の一例としての情報処理装置１におけるＣＰＵ１０１間のデータの受け渡し手法を説明する図である。
【００７４】
本第２実施形態においては、第１実施形態のＢＢ１００に代えて、ＣＰＵ１０１毎に異なる優先度情報１０２１が設定されている。又、本第２実施形態においても、第１実施形態と同様に、優先度情報として、２種類の優先度（第１の優先度情報、第２の優先度情報）が設定されている。
これらのＣＰＵ１０１毎に設定される優先度は、各ＣＰＵ１０１に対して互いに重複することの無いユニークな値として設定される。これにより、優先度から送信元ＣＰＵ１０１を特定することができる。
【００７５】
そして、本第２実施形態においては、ＢＢ１００においてＣＰＵ１０１毎にバッファ領域２５が備えられている。これにより、優先度はバッファ（記憶領域）２５を特定する識別情報として機能する。
図１１に示す例においては、ＣＰＵ１０１＃０Ａには優先度Ｘ（例えば、Ｘ＝０もしくはＸ＝３１）が設定されており、ＣＰＵ＃１Ａには優先度Ｙ（例えば、Ｙ＝１もしくはＹ＝３０）が設定されている。
【００７６】
また、便宜上、図示は省略するが、他のＣＰＵ＃０Ｂ，＃０Ｃにも、それぞれ異なる優先度が設定されている。
そして、ＢＢ＃０においては、ＣＰＵ＃０Ａ，＃０Ｂ，＃０ＣがそれぞれＢＢ＃２のＣＰＵ＃２Ａにデータを受け渡そうとしている。
ＣＰＵ＃０Ａは自身の優先メモリ１０２のバッファ領域２５−０Ａのロックを獲得し、このバッファ領域２５−０Ａにデータを格納する。この際、ＣＰＵ＃０Ａは、他のＣＰＵ１０１（例えば、ＣＰＵ＃０Ｂ，＃０Ｃ）と競合することなくバッファ領域２５−０Ａのロックを取ることができる。ＣＰＵ＃０Ａは、ＢＢ＃０に予め設定されている優先度“０”，“３１”からランダムにいずれかの優先度を選択し、この選択した優先度Ｘを伴う割込み通知をＣＰＵ＃２Ａに対して行なう。
【００７７】
ＢＢ＃０においては、ＣＰＵ＃０Ｂは自身の優先メモリ１０２のバッファ領域２５−０Ｂのロックを獲得して、このバッファ領域２５−０Ｂにデータを格納し、又、ＣＰＵ＃０Ｃは自身の優先メモリ１０２のバッファ領域２５−０Ｃのロックを獲得して、このバッファ領域２５−０Ｃにデータを格納する。
これらのＣＰＵ＃０Ａ〜＃０Ｃにおいても、他のＣＰＵ１０１と競合することなくバッファ領域２５−０Ｂ，２５−０Ｃのロックを取ることができる。
【００７８】
ＢＢ＃１においては、ＣＰＵ＃１Ａが自身の優先メモリ１０２のバッファ領域２５−１Ａのロックを獲得し、このバッファ領域２５−１Ａにデータを格納する。この際、ＣＰＵ＃１Ａは、他のＣＰＵ１０１（例えば、ＣＰＵ＃０Ｂ，＃０Ｃ）と競合することなくバッファ領域２５−０Ａのロックを取ることができる。
ＣＰＵ＃１Ａは、ＢＢ＃１に予め設定されている優先度“１”，“３０”からランダムにいずれかの優先度を選択し、この選択した優先度Ｙを伴う割込み通知をＣＰＵ＃２Ａに対して行なう。
【００７９】
このように、第２実施形態の一例としての情報処理装置１においては、上述した第１実施形態と同様の作用効果を得ることができる他、各ＣＰＵ１０１が他のＣＰＵ１０１との間で競合することなくバッファ領域２５のロックを獲得することができる。すなわち、各ＣＰＵ１０１において、バッファ領域２５にデータを書き込むためのロック獲得のための競合が生じることがなく、ロック競合による処理の遅滞が生じないので、処理を高速化することができる。
【００８０】
（Ｃ）その他
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
例えば、上述した各実施形態においては、各ノード１００毎もしくはＣＰＵ１０１毎にユニークな優先度を設定し、この優先度に基づいて送信元のノード１００やＣＰＵ１０１を特定しているが、これに限定されるものではない。例えば、優先度に代えて、個々のノード１００やＣＰＵ１０１に対して、それぞれユニークな識別情報を設定し、送信元ＣＰＵ１０１が送信先ＣＰＵ１０１にこの識別情報を通知することにより、送信先ＣＰＵ１０１において、送信元のノード１００やＣＰＵ１０１を特定してもよい。
【００８１】
また、上述した第２実施形態においては、送信元のＢＢ１００においてＣＰＵ１０１毎にバッファ領域２５を備えているがこれに限定されるものではない。すなわち、送信元のＢＢ１００において、複数のＣＰＵ１０１で共通のバッファ領域２５をそなえてもよい。これにより、送信元のＢＢ１００において、バッファ領域２５のサイズを小さくすることができる。
【００８２】
また、上述した第２実施形態においては、ＣＰＵ１０１毎に異なる優先度情報１０２１が設定されているが、これに限定されるものではなく、第１実施形態と同様に、ＢＢ１００毎に異なる優先度情報１０２１を設定してもよい。
上述した開示により本実施形態を当業者によって実施・製造することが可能である。
（Ｄ）付記
（付記１）
複数の演算装置及び複数の記憶領域を有する情報処理装置において、
前記複数の演算装置のうちの第１の演算装置は、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信するデータ送信処理部と、
前記データ送信処理部によるデータの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる割込み生成部とを備え、
前記複数の演算装置のうちの第２の演算装置は、
前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定する割込み処理部と、
前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すデータ受信部と、
を備えることを特徴とする情報処理装置。
【００８３】
（付記２）
前記第１の演算装置が、当該第１の演算装置上で実行されるOperating System（ＯＳ）からのクロスコールを受信するクロスコール受信処理部を有し、
前記データ送信処理部が、前記クロスコール受信処理部が受信したクロスコールの送信先の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信し、
前記割込み生成部が、前記クロスコール受信処理部が受信したクロスコールの送信先の演算装置に対して前記割込みを発生させることを特徴とする、付記１記載の情報処理装置。
【００８４】
（付記３）
前記第２の演算装置が、前記データ受信部が前記第１の記憶領域から読み出したデータを前記クロスコールの送信先の演算装置が実行するＯＳに対応するＯＳ用記憶領域に格納するデータ格納処理部を備えることを特徴とする、付記１又は２記載の情報処理装置。
（付記４）
それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記複数のノードのうちの第１のノードにおいて、
前記第１の演算装置を有し、
前記割込み生成部が、前記データ送信処理部によるデータの送信に対応する割込みを、当該第１のノードを特定するノード識別情報とともに、前記データの送信先に対して発生させ、
前記複数のノードのうちの第２のノードにおいて、
前記複数のノードのそれぞれに対応した記憶領域と、前記第２の演算装置とを有し、
前記割込み処理部が、前記第１のノードから割込みを受信すると、前記割込みと共に受信した前記ノード識別情報に基づいて、どのノードからの要求であるかを特定し、
前記データ受信部が、複数のノードの各々に対応して備えられた複数の記憶領域のうち、前記割込み処理部が特定したノードに対応する前記第１の記憶領域から受信データを読み出すことを特徴とする、付記１〜３のいずれか１項に記載の情報処理装置。
【００８５】
（付記５）
前記複数のノードをまたいでＯＳを管理するハイパーバイザが前記識別情報を有し、
前記ハイパーバイザが前記ＯＳからクロスコールを受信すると、該クロスコールの送信元演算装置及び送信先演算装置の各々において、前記ハイパーバイザが前記識別情報を参照してデータが格納された前記第１の記憶領域を判定することを特徴とする、付記４記載の情報処理装置。
【００８６】
（付記６）
ノード毎に異なる優先度が設定され、
前記ノード識別情報が、前記優先度を示す優先度情報を備えることを特徴とする付記４又は５記載の情報処理装置。
（付記７）
前記優先度情報が、第１の優先度を表す第１優先情報と、前記複数のノードのいずれに設定された前記第１の優先度よりも低い第２の優先度を表す第２優先情報とを有し、
前記第１の演算装置は、
前記第１優先情報と前記第２優先情報とのいずれかをランダムに選択する選択部を備え、
前記割込み生成部が、前記選択部によって選択された前記第１優先情報もしくは前記第２優先情報のいずれかを前記ノード識別情報として前記データの送信先に対して通知することを特徴とする付記６記載の情報処理装置。
【００８７】
（付記８）
前記記憶領域において、
前記第１の演算装置から当該記憶領域のステータス変更のためのアクセスを行なう第１管理領域と、前記第２の演算装置がデータを取得するためのアクセスを行なう第２管理領域とを異なるキャッシュライン上に備えることを特徴とする付記１〜７のいずれか１項に記載の情報処理装置。
【００８８】
（付記９）
それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記複数のノードのうちの第１のノードにおいて、
前記第１の演算装置と、当該第１の演算装置に対応する記憶領域とを有し、
前記複数のノードのうちの第２のノードにおいて、
前記第２の演算装置を有し、
前記割込み処理部が、前記第１のノードから割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定し、
前記データ受信部が、複数の演算装置の各々に対応して備えられた複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域から受信データを読み出すことを特徴とする、付記１記載の情報処理装置。
【００８９】
（付記１０）
複数の演算装置及び複数の記憶領域を有する情報処理装置において、
前記複数の演算装置のうちの第１の演算装置が、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信するステップと、
前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させるステップと、
前記複数の演算装置のうちの第２の演算装置が、
前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定するステップと、
前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すステップとを備えることを特徴とする処理方法。
【００９０】
（付記１１）
前記第１の演算装置が、当該第１の演算装置上で実行されるOperating System（ＯＳ）からのクロスコールを受信するステップと、
受信したクロスコールの送信先の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に格納するステップと、
前記クロスコール受信処理部が受信したクロスコールの送信先の演算装置に対して前記割込みを発生させるステップとを備えることを特徴とする、付記１０記載の処理方法。
【００９１】
（付記１２）
前記第２の演算装置が、前記記憶領域から読み出したデータを前記クロスコールの送信先の演算装置が実行するＯＳに対応するＯＳ用記憶領域に格納するステップを備えることを特徴とする、付記１０又は１１記載の処理方法。
（付記１３）
前記情報処理装置が、それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記複数のノードのうちの第１のノードにおいて、前記第１の演算装置を有し、
前記データの送信に対応する割込みを、当該第１のノードを特定するノード識別情報とともに、前記データの送信先に対して発生させるステップと、
前記複数のノードのうちの第２のノードにおいて、前記複数のノードのそれぞれに対応した記憶領域と、前記第２の演算装置とを有し、
前記第１のノードから割込みを受信すると、前記割込みと共に受信した前記ノード識別情報に基づいて、どのノードからの要求であるかを特定するステップと、
複数のノードの各々に対応して備えられた複数の記憶領域のうち、特定されたノードに対応する前記第１の記憶領域から受信データを読み出すステップとを備えることを特徴とする、付記１０〜１２のいずれか１項に記載の処理方法。
【００９２】
（付記１４）
前記複数のノードをまたいでＯＳを管理するハイパーバイザが前記識別情報を有し、
前記ハイパーバイザが前記ＯＳからクロスコールを受信すると、該クロスコールの送信元演算装置及び送信先演算装置の各々において、前記ハイパーバイザが前記識別情報を参照してデータが格納された前記第１の記憶領域を判定するステップを実現することを特徴とする、付記１３記載の処理方法。
【００９３】
（付記１５）
ノード毎に異なる優先度が設定され、
前記ノード識別情報が、前記優先度を示す優先度情報を備えることを特徴とする付記１３又は１４記載の処理方法。
（付記１６）
前記優先度情報が、第１の優先度を表す第１優先情報と、前記複数のノードのいずれに設定された前記第１の優先度よりも低い第２の優先度を表す第２優先情報とを有し、
前記第１の演算装置が、
前記第１優先情報と前記第２優先情報とのいずれかをランダムに選択するステップと、
選択された前記第１優先情報もしくは前記第２優先情報のいずれかを前記ノード識別情報として前記データの送信先に対して通知するステップとを備えることを特徴とする付記１５記載の処理方法。
【００９４】
（付記１７）
前記記憶領域において、
前記第１の演算装置から当該記憶領域のステータス変更のためのアクセスを行なう第１管理領域と、前記第２の演算装置がデータを取得するためのアクセスを行なう第２管理領域とを異なるキャッシュライン上に備えることを特徴とする付記１０〜１６のいずれか１項に記載の処理方法。
【００９５】
（付記１８）
前記情報処理装置が、それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記複数のノードのうちの第１のノードにおいて、
前記第１の演算装置と、当該第１の演算装置に対応する記憶領域とを有し、
前記複数のノードのうちの第２のノードにおいて、
前記第２の演算装置を有し、
前記第１のノードから割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定するステップと、
複数の演算装置の各々に対応して備えられた複数の記憶領域のうち、特定された演算装置に対応する前記第１の記憶領域から受信データを読み出すステップとを備えることを特徴とする、付記１０記載の処理方法。
【００９６】
（付記１９）
複数の演算装置及び複数の記憶領域を有するコンピュータにおいて、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信し、
前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる
処理を前記コンピュータに実行させることを特徴とするプログラム。
【００９７】
（付記２０）
Operating System（ＯＳ）からのクロスコールを受信し、
受信したクロスコールの送信先の演算装置に受け渡すデータを前記複数の記憶領域（２５）のうちの第１の記憶領域に格納し、
受信したクロスコールの送信先の演算装置に対して前記割込みを発生させる
処理を前記コンピュータに実行させることを特徴とする、付記１９記載のプログラム。
【００９８】
（付記２１）
前記情報処理装置が、それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記データの送信に対応する割込みを、当該第１のノードを特定するノード識別情報とともに、前記データの送信先に対して発生させる処理を前記コンピュータに実行させることを特徴とする、付記１９又は２０記載のプログラム。
【００９９】
（付記２２）
ハイパーバイザとして、前記複数のノードをまたいでＯＳを管理し、
前記ＯＳからクロスコールを受信すると、該クロスコールの送信元演算装置及び送信先演算装置の各々において、前記ハイパーバイザが前記識別情報を参照してデータが格納された前記第１の記憶領域を判定する
処理を前記コンピュータに実行させることを特徴とする、付記２１記載のプログラム。
【０１００】
（付記２３）
ノード毎に異なる優先度が設定され、
前記ノード識別情報が、前記優先度を示す優先度情報を備えることを特徴とする付記２１又は２２記載のプログラム。
（付記２４）
前記優先度情報が、第１の優先度を表す第１優先情報と、前記複数のノードのいずれに設定された前記第１の優先度よりも低い第２の優先度を表す第２優先情報とを有し、
前記第１の演算装置が、
前記第１優先情報と前記第２優先情報とのいずれかをランダムに選択し、
選択された前記第１優先情報もしくは前記第２優先情報のいずれかを前記ノード識別情報として前記データの送信先に対して通知する
処理を前記コンピュータに実行させることを特徴とする付記２３記載のプログラム。
【０１０１】
（付記２５）
複数の演算装置及び複数の記憶領域を有するコンピュータにおいて、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信し、
前記データの送信に対応する割込みを、前記記憶領域を特定する識別情報とともに、前記データの送信先に対して発生させる
処理を前記コンピュータに実行させることを特徴とするプログラムを記録したコンピュータ読取可能な記録媒体。
【０１０２】
（付記２６）
Operating System（ＯＳ）からのクロスコールを受信し、
受信したクロスコールの送信先の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に格納し、
受信したクロスコールの送信先の演算装置に対して前記割込みを発生させる
処理を前記コンピュータに実行させることを特徴とする、付記２５記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【０１０３】
（付記２７）
前記情報処理装置が、それぞれが１つ以上の前記演算装置を備える複数のノードを備え、
前記データの送信に対応する割込みを、当該第１のノードを特定するノード識別情報とともに、前記データの送信先に対して発生させる処理を前期コンピュータに実行させることを特徴とする、付記２５又は２６記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【０１０４】
（付記２８）
ハイパーバイザとして、前記複数のノードをまたいでＯＳを管理し、
前記ＯＳからクロスコールを受信すると、該クロスコールの送信元演算装置及び送信先演算装置の各々において、前記ハイパーバイザが前記識別情報を参照してデータが格納された記憶領域を判定する
処理を前記コンピュータに実行させることを特徴とする、付記２７記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【０１０５】
（付記２９）
ノード毎に異なる優先度が設定され、
前記ノード識別情報が、前記優先度を示す優先度情報を備えることを特徴とする付記２７又は２８記載のプログラムを記録したコンピュータ読取可能な記録媒体。
（付記３０）
前記優先度情報が、第１の優先度を表す第１優先情報と、前記複数のノードのいずれに設定された前記第１の優先度よりも低い第２の優先度を表す第２優先情報とを有し、
前記第１の演算装置が、
前記第１優先情報と前記第２優先情報とのいずれかをランダムに選択し、
選択された前記第１優先情報もしくは前記第２優先情報のいずれかを前記ノード識別情報として前記データの送信先に対して通知する
処理を前記コンピュータに実行させることを特徴とする付記２９記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【０１０６】
（付記３１）
複数の演算装置及び複数の記憶領域を有する情報処理装置において、
前記複数の演算装置のうちの第１の演算装置は、
他の演算装置に受け渡すデータを前記複数の記憶領域のうちの第１の記憶領域に送信するデータ送信処理部と、
前記データ送信処理部によるデータの送信に対応する割込みの優先順位を、２つの優先度から何れかを選択する処理優先度選択部と、
前記データ送信処理部によるデータの送信に対応する割込みは、前記記憶領域を特定する識別情報および前記選択された優先度とともに、前記データの送信先に対して発生させる割込み生成部とを備え、
前記複数の演算装置のうちの第２の演算装置は、
前記割込みを受信すると、前記割込みと共に受信した前記識別情報に基づいて、どの演算装置からの要求であるかを特定する割込み処理部と、
前記複数の記憶領域のうち、前記割込み処理部が特定した演算装置に対応する前記第１の記憶領域からデータを読み出すデータ受信部と、
を備えることを特徴とする情報処理装置。
【０１０７】
（付記３２）
２つの優先度からランダムに何れかを選択する処理優先度選択部を特徴とする付記３１記載の情報処理装置。
（付記３３）
複数の演算装置及び複数の記憶領域を有する情報処理装置は、ノード識別情報により区分される複数のノードを有し、同じノード内の各ＣＰＵには同じ優先度が選択されることを特徴とする付記３１記載の情報処理装置。
【符号の説明】
【０１０８】
１    情報処理装置
１１    クロスコール受信処理部
１２    データ送信処理部
１３    処理優先度設定部
２１    データ格納処理部
２２    データ受信処理部
２３    割込み処理部
２４    割込み優先順位キュー
２５，２５−０〜２５−１５，２５−０Ａ，２５−０Ｂ，２５−０Ｃ，２５−１Ａ    受信バッファ領域
１００    ＢＢ
１０１    ＣＰＵ
１０２    メモリ，優先メモリ
１０３    ＭＡＣ
１０４    バスインタフェース
１０５    サービスプロセッサ
２５１ａ    第１データ
２５１ｂ    第２データ
２５２    データ  
１０２１    優先度情報
１０２３    ＯＳ用領域
１０２４    領域
２５１０    ステータス
２５２０    データレディ
【図１】
2014048965.tif 000003
【図２】
2014048965.tif 000004
【図３】
2014048965.tif 000005
【図４】
2014048965.tif 000006
【図５】
2014048965.tif 000007
【図６】
2014048965.tif 000008
【図７】
2014048965.tif 000009
【図８】
2014048965.tif 000010
【図９】
2014048965.tif 000011
【図１０】
2014048965.tif 000012
【図１１】
2014048965.tif 000013