(57)【特許請求の範囲】
【請求項１】
互いに接続される複数の演算処理装置と、
各前記演算処理装置のそれぞれに複数配置され、入出力処理装置を制御する制御部と、
動作モードを第１モード又は第２モードの何れかに決定する動作モード決定部と、
前記第２モードの場合に制御部識別情報のサイズを前記第１モードの場合よりも所定サイズ小さくし且つ演算処理装置識別情報の前記所定サイズの領域が前記制御部の識別のための情報となるように、前記動作モードに応じて前記演算処理装置識別情報及び前記制御部識別情報を生成し、生成した前記演算処理装置識別情報及び前記制御部識別情報を基に送信元及び送信先の識別情報を生成する生成部と、
送信先及び送信元の識別情報を用いて信号の送受信を行う通信部と、
受信した信号の送信先が前記制御部の場合、前記送信先の識別情報を基に、制御装置を選択し信号を送信する選択部と、
受信した信号の送信先が前記制御部以外の場合、前記動作モード及び前記演算処理装置識別情報のうち前記所定サイズの領域の値を基に、受信した信号に対して処理を実行する処理実行部と
を備えたことを特徴とする情報処理装置。 
【請求項２】
前記生成部は、前記第１モードの場合、前記演算処理装置識別情報を第１サイズとし、前記制御部識別情報を第２サイズとして、送信先及び送信元の識別情報を生成し、前記第２モードの場合、前記演算処理装置識別情報を前記第１サイズとし、前記制御部識別情報を前記第２サイズより前記所定サイズ小さい第３サイズとし、且つ前記演算処理装置識別情報のうち前記所定サイズの領域を前記制御部を識別するための情報として、送信先及び送信元の識別情報を生成することを特徴とする請求項１に記載の情報処理装置。 
【請求項３】
前記選択部は、前記第１モードの場合、送信先の識別情報に含まれる前記制御部識別情報を基に、前記制御部を選択し、前記第２モードの場合、送信先の識別情報に含まれる前記演算処理装置識別情報のうちの前記所定サイズの領域の値及び前記制御部識別情報を基に前記制御部を選択することを特徴とする請求項１又は２に記載の情報処理装置。 
【請求項４】
前記処理実行部は、前記動作モードが前記第１モードの場合、及び、前記動作モードが前記第２モードであって前記演算処理装置識別情報のうち前記所定サイズの領域の値が所定値の場合、受信した前記信号に対して第１処理を実行し、前記動作モードが前記第２モードであって前記演算処理装置識別情報のうち前記所定サイズの領域の値が前記所定値以外の値の場合、受信した前記信号に対して第２処理を実行する請求項１〜３のいずれか一つに記載の情報処理装置。 
【請求項５】
前記第２モードは、配置された前記制御部の数が自装置よりも少ない第１演算処理装置と通信を行うシステムで動作する場合の動作モードであり、
前記第１モードは、配置された前記制御部の数が自装置よりも少ない第１演算処理装置との通信を行わないシステムで動作する場合の動作モードである
ことを特徴とする請求項１〜４のいずれか一つに記載の情報処理装置。 
【請求項６】
入出力処理装置を制御する複数の制御部と、
動作モードを第１モード又は第２モードの何れかに決定する動作モード決定部と、
前記第２モードの場合に制御部識別情報のサイズを前記第１モードの場合よりも所定サイズ小さくし且つ演算処理装置識別情報の前記所定サイズの領域が前記制御部の識別のための情報となるように、前記動作モードに応じて前記演算処理装置識別情報及び前記制御部識別情報を生成し、生成した前記演算処理装置識別情報及び前記制御部識別情報を基に送信元及び送信先の識別情報を生成する生成部と、
送信先及び送信元の識別情報を用いて信号の送受信を行う通信部と、
受信した信号の送信先が前記制御部の場合、前記送信先の識別情報を基に、制御装置を選択し信号を送信する選択部と、
受信した信号の送信先が前記制御部以外の場合、前記動作モード及び前記演算処理装置識別情報のうち前記所定サイズの領域の値を基に、受信した信号に対して処理を実行する処理実行部と
を備えたことを特徴とする演算処理装置。 
【請求項７】
互いに接続される複数の演算処理装置及び各前記演算処理装置のそれぞれに複数配置され、入出力処理装置を制御する制御装置を有する情報処理装置の制御方法であって、
前記演算処理装置が、
動作モードを第１モード又は第２モードの何れかに決定し、
前記第２モードの場合に制御部識別情報のサイズを前記第１モードの場合よりも所定サイズ小さくし且つ演算処理装置識別情報の前記所定サイズの領域が前記制御装置の識別のための情報となるように、前記動作モードに応じて前記演算処理装置識別情報及び前記制御部識別情報を生成し、
生成した前記演算処理装置識別情報及び前記制御部識別情報を基に送信元及び送信先の識別情報を生成し、
送信先及び送信元の識別情報を用いて信号の送受信を行い、
受信した信号の送信先が前記制御装置の場合、前記送信先の識別情報を基に、制御装置を選択し信号を送信し、
受信した信号の送信先が前記制御装置以外の場合、前記動作モード及び前記演算処理装置識別情報のうち前記所定サイズの領域の値を基に、受信した信号に対して処理を実行する
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、演算処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
近年、情報処理装置の発展は目覚ましく、新たな機能を有する情報処理装置が次々に登場し、各システムに導入されている。例えば、ＣＰＵ（Central  Processing  Unit）コアの性能向上などにより、少ない数のＣＰＵコアでも今まで以上の処理が行えるようになる。加えて、ＣＰＵコアの性能向上により、ＣＰＵコアが制御するＩＯ（Input  Output）装置の数を増やすことが求められている。このようにＩＯ装置の数を増やすことで、情報処理装置のＩＯ処理性能を向上させることができる。実際には、ＣＰＵはＩＯコントローラを介してＩＯ装置のコントロールを行うので、ＩＯコントローラの数が増えることになる。ここで、１つ又は複数のＣＰＵコア及びＩＯ装置をコントロールするＩＯコントローラを搭載した演算処理装置を「プロセッサ」という。また、このプロセッサは、「チップ」とも呼ばれる。チップにおけるＣＰＵコアの数は、１つでも複数でもよい。
【０００３】
さらに、旧来の情報処理装置と比較して、ＣＰＵコアの数を少なくし各ＣＰＵコアがコントロールするＩＯ装置の数を増やしたプロセッサが新しく開発されている。すなわち、この場合の旧来のプロセッサは、新しいプロセッサと比べて、ＣＰＵコアの数は多いが各ＣＰＵコアがコントロールするＩＯ装置の数が少ないといえる。
【０００４】
ここで、大規模なシステムの場合、古い資産を継続活用したいというニーズが多く存在する。そのため、旧来の情報処理装置が使用されているシステムに新しい情報処理装置を追加して新たなシステムの構築が行われる場合がある。このようなシステムでは、旧来の情報処理装置と新しい情報処理装置とが相互に通信を行えることが好ましい。
【０００５】
一方、マルチプロセッサシステムを搭載した情報処理装置において、プロセッサ間でパケットを送受信する場合、送信先プロセッサ及び送信元プロセッサをパケットのヘッダなどで指定する。具体的には、送信先プロセッサ及び送信元プロセッサは、各プロセッサの識別子であるＣＨＩＰＩＤ（Identification）で指定される。さらに、パケットのヘッダでは、そのパケットを使用するＩＯ装置を制御するＩＯコントローラの識別子であるＩＯ−ＩＤも指定される。
【０００６】
すなわち、各プロセッサは、ヘッダに記載された宛先のＣＨＩＰＩＤを用いてパケットを配送する。そして、パケットを受信したＣＰＵコアは、プロセッサ内部における宛先をＩＯ−ＩＤを用いて判定する。
【０００７】
ここで、新しいプロセッサと旧来のプロセッサとにおいてＣＰＵコアの数やＩＯコントローラの数が異なる場合、パケットのフォーマットが異なるため、単純に接続するだけではパケットの送受信が困難となる。
【０００８】
例えば、旧来のプロセッサは、ＩＯコントローラの数がプロセッサあたり２つであり、１ビットのＩＯ−ＩＤを用いるものとし、新しいプロセッサは、ＩＯコントローラの数がプロセッサあたり４つであり、２ビットのＩＯ−ＩＤを用いるものとする。このような新旧のプロセッサ同士を接続する場合、ＩＯ−ＩＤが１ビットであるプロセッサが通信で用いるパケットのフォーマットでは、ＩＯ−ＩＤの格納領域が足りないため新しいプロセッサが有するＩＯコントローラの全てのＩＯ−ＩＤを表すことが困難である。そこで、従来、ＩＯ−ＩＤが２ビットであるプロセッサは、プロセッサあたりの４つのＩＯコントローラのうち２つを使用不可にして、パケットのフォーマットをＩＯ−ＩＤが１ビットであるプロセッサに合わせることが行われてきた。これにより、ＩＯ−ＩＤの数が異なる新旧のプロセッサを接続することを可能としていた。
【０００９】
なお、複数の仮想マシンのそれぞれが、同じ物理リソース又はデバイスに対して設定を行い、個別にアクセスする従来技術がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１２−９０２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、ＩＯコントローラを使用不可とした場合、新しいプロセッサのＩＯ処理能力を十分に発揮することが難しい。また、クラウドなど不特定多数のユーザの利用を想定したシステムの場合、多くのＩＯ装置を用いて同時に処理を行うことが困難となる。
【００１２】
また、複数の仮想マシンのそれぞれが別個に物理リソース又はデバイスを設定する従来技術では、ＩＯ−ＩＤのビット数が異なる装置間の通信については考慮されていない。この従来技術を用いても、ＣＰＵコアの数やＩＯコントローラの数が異なる装置を接続する場合、ＩＯコントローラの数が多い方の装置のＩＯコントローラの一部を使用不可にして、双方を同じ構成にして動作させることになる。そのため、この従来技術を用いても、無駄になるＩＯコントローラが存在してしまい、新しいプロセッサのＩＯ処理能力を十分に発揮することが困難である。
【００１３】
開示の技術は、上記に鑑みてなされたものであって、ＩＯコントローラの数が異なるプロセッサが混在する場合の各プロセッサの入出力性能を向上させる情報処理装置、演算処理装置及び情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の一つの態様において、情報処理装置は、互いに接続される複数の演算処理装置と各前記演算処理装置のそれぞれに複数配置され、入出力処理装置を制御する制御部とを有する。さらに情報処理装置は以下の各部を有する。動作モード決定部は、動作モードを第１モード又は第２モードの何れかに決定する。生成部は、前記第２モードの場合に制御部識別情報のサイズを前記第１モードの場合よりも所定サイズ小さくし且つ演算処理装置識別情報の前記所定サイズの領域が前記制御部の識別ための情報となるように、前記動作モードに応じて前記演算処理装置識別情報及び前記制御部識別情報を生成し、生成した前記演算処理装置識別情報及び前記制御部識別情報を基に送信元及び送信先の識別情報を生成する。通信部は、送信先及び送信元の識別情報を用いて信号の送受信を行う。選択部は、受信した信号の送信先が前記制御部の場合、前記送信先の識別情報を基に、制御装置を選択し信号を送信する。処理実行部は、受信した信号の送信先が前記制御部以外の場合、前記動作モード及び前記演算処理装置識別情報のうち前記所定サイズの領域の値を基に、受信した信号に対して処理を実行する。
【発明の効果】
【００１５】
本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の一つの態様によれば、ＩＯコントローラの数が異なるプロセッサが混在する場合の各プロセッサの処理能力を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、実施例に係る情報処理システムの一例の図である。
【図２】図２は、４つのＩＯコントローラを有するプロセッサの内容を表すブロック図である。
【図３】図３は、４つのＩＯコントローラを有するプロセッサにおけるパケット送信時の機能のブロック図である。
【図４】図４は、４つのＩＯコントローラを有するプロセッサにおけるパケット受信時の機能のブロック図である。
【図５】図５は、動作モード毎のパケットを説明するための図である。
【図６】図６は、他のプロセッサから見た４つのＩＯコントローラを有するプロセッサの状態を説明するための図である。
【図７】図７は、４つのＩＯコントローラを有するプロセッサにおけるリクエスト処理時の機能のブロック図である。
【図８】図８は、リクエスト処理経路判定のテーブルを示す図である。
【図９】図９は、動作モード毎のリクエスト応答処理を説明するための図である。
【図１０】図１０は、４つのＩＯコントローラを有するプロセッサによるパケットの発行処理のフローチャートである。
【図１１】図１１は、４つのＩＯコントローラを有するプロセッサによるＩＯ処理要求のパケットの受信処理のフローチャートである。
【図１２】図１２は、４つのＩＯコントローラを有するプロセッサによるリクエストの受信処理のフローチャートである。
【図１３】図１３は、２つのＩＯコントローラを有するプロセッサ同士の通信におけるアドレスマップを説明するための図である。
【図１４】図１４は、互換モードを用いた通信におけるアドレスマップを説明するための図である。
【図１５】図１５は、通常モードを用いた通信におけるアドレスマップを説明するための図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、演算処理装置及び情報処理装置の制御方法が限定されるものではない。
【実施例】
【００１８】
図１は、実施例に係る情報処理システムの一例の図である。本実施例に係る情報処理システムは、複数のノード１及び複数のクロスバスイッチ５を有する。ノード１は、情報処理装置の一例であり、例えば、サーバなどである。
【００１９】
ノード１は、サービスプロセッサ２、複数のメモリ３、２つのＸＢ（Cross  bar）チップ４及び演算処理装置である複数のプロセッサ１０を有する。ただし、それぞれのノード１は、プロセッサ１０の数などが異なってもよい。
【００２０】
ＸＢチップ４は、各プロセッサ１０が有する外部ＩＦ（Interface）１０６に接続される。また、ＸＢチップ４は、各クロスバスイッチ５に接続される。ＸＢチップ４は、接続されたプロセッサ１０又はクロスバスイッチ５からパケットを受信する。そして、ＸＢチップ４は、受信したパケットの送信先を判定し、送信先である他のプロセッサ１０又はクロスバスイッチ５に経路を切り替えてパケットを転送する。
【００２１】
クロスバスイッチ５は、各ノード１が有するＸＢチップ４に接続される。クロスバスイッチ５は、ＸＢチップ４からパケットを受信する。そして、クロスバスイッチ５は、受信したパケットの送信先を判定し、送信先であるプロセッサ１０に接続されたＸＢチップ４に経路を切り替えてパケットを転送する。
【００２２】
また、クロスバスイッチ５は、サービスプロセッサ５０１を有する。サービスプロセッサ５０１は、自己が配置されたクロスバスイッチ５の起動やクロスバスイッチ５内の構成制御や温度監視などの状態監視を行う。
【００２３】
プロセッサ１０は、コア１０１、キャッシュ１０２、ＩＯコントローラ１０３、メモリコントローラ１０４、構成制御レジスタ１０５及び外部ＩＦ１０６を有する。
【００２４】
コア１０１は、ＣＰＵコアである。コア１０１は、メモリ３に対するデータの読み出し及び書き込みをメモリコントローラ１０４に指示する。また、コア１０１は、ＩＯ装置の制御をＩＯコントローラ１０３に指示する。また、コア１０１は、外部ＩＦ１０６及びＸＢチップ４を介して、自己が属するノード１内の他のプロセッサ１０に搭載されたコア１０１と通信する。また、コア１０１は、外部ＩＦ１０６、ＸＢチップ４及びクロスバスイッチ５を介して自己が属するノード１以外のノード１内の他のプロセッサ１０に搭載されたコア１０１と通信する。
【００２５】
そして、コア１０１は、キャッシュ１０２、ＩＯコントローラ１０３、メモリコントローラ１０４、構成制御レジスタ１０５及び外部ＩＦ１０６を用いて演算処理を行う。
【００２６】
キャッシュ１０２は、メモリ３よりも高速な一時的な記憶装置である。構成制御レジスタ１０５は、後述するプロセッサ１０の動作モードの設定、各プロセッサ１０のＣＨＩＰＩＤ及びアドレスとＣＨＩＰＩＤとの対応情報などを記憶する。また、外部ＩＦ１０６は、プロセッサ１０がＸＢチップ４と接続するためのインタフェースである。
【００２７】
メモリコントローラ１０４は、メモリ３に対するデータの読み出し及び書き込みを制御する。各メモリ３は、それぞれのプロセッサ１０に対応させて配置される。メモリ３は、対応するプロセッサ１０が使用する主記憶媒体である。
【００２８】
ＩＯコントローラ１０３は、図１には図示していないが、ＬＡＮ（Local  Area  Network）などのネットワークやストレージ装置などのＩＯ装置に接続される。ＩＯコントローラ１０３は、接続されたネットワークを介した通信の制御や接続されたＩＯ装置の制御を行う。このＩＯコントローラ１０３が、「制御部」及び「制御装置」の一例にあたる。
【００２９】
サービスプロセッサ２は、後述するプロセッサ１０の動作モードの設定、各プロセッサ１０のＣＨＩＰＩＤ及びアドレスとＣＨＩＰＩＤとの対応情報を各プロセッサ１０の構成情報レジスタに書き込む。また、サービスプロセッサ２は、自己が配置されたノード１０に搭載された各プロセッサ１０の起動やノード１内の温度監視などの状態監視などを行う。
【００３０】
サービスプロセッサ２は、各ノード１に配置される。そして、サービスプロセッサ２及びサービスプロセッサ５０１のうちの何れかがメインのサービスプロセッサとなり、全体の統括制御を行う。具体的には、メインのサービスプロセッサは、各プロセッサ１０のＣＨＩＰＩＤの割り当て、通信セグメントの決定、及び、各セグメントでのプロセッサ１０の動作モードの決定などを行う。
【００３１】
ここで、本実施例では、プロセッサ１０に内蔵するＩＯコントローラ１０３の数が異なるものが混在する。具体的には、ＩＯコントローラ１０３の数が２つのプロセッサ１０とＩＯコントローラ１０３の数が４つのプロセッサ１０が存在する。
【００３２】
そして、ＩＯコントローラ１０３を４つ有するプロセッサ１０は、通信の運用形態に応じて、通常モードと互換モードという２つの動作モードを有する。具体的には、ＩＯコントローラ１０３の数が同じ他のプロセッサ１０とのみ通信を行う場合、プロセッサ１０は、通常モードで動作する。また、ＩＯコントローラ１０３の数が異なる他のプロセッサ１０と通信を行う可能性がある場合、プロセッサ１０は、互換モードで動作する。この通常モードが、「第１モード」の一例にあたる。また、互換モードが、「第２モード」の一例にあたる。以下に、本実施例に係るプロセッサ１０による通信及びパケット処理の詳細について説明する。
【００３３】
図２は、４つのＩＯコントローラを有するプロセッサの内部を表すブロック図である。ただし、図２では、４つのＩＯコントローラ１０３をまとめて１つのＩＯコントローラ１０３で表す。図２に示すように、プロセッサ１０は、外部バスＩＦ部１１、パケット送信部１２、パケット受信部１３、ＩＯリクエスト生成部１４、ＩＯリクエスト処理部１５及びリクエスト処理制御部１６を有する。また、プロセッサ１０は、図１に示した構成制御レジスタ１０５及びＩＯコントローラ１０３を有する。ＩＯコントローラ１０３は、ＩＯ装置６に接続される。ＩＯコントローラ１０３は、接続されたＩＯ装置６を制御する。以下では、４つのＩＯコントローラ１０３を有するプロセッサ１０を単にプロセッサ１０という場合がある。
【００３４】
ここで、パケット送信部１２及びパケット受信部１３が、「通信部」の一例にあたる。また、ＩＯリクエスト生成部１４が、「生成部」の一例にあたる。また、ＩＯリクエスト処理部１５が、「選択部」の一例にあたる。さらに、リクエスト処理制御部１６が、「処理実行部」の一例にあたる。
【００３５】
外部バスＩＦ部１１は、例えば、図１の外部ＩＦ１０６によって実現される。パケット送信部１２、パケット受信部１３、ＩＯリクエスト生成部１４、ＩＯリクエスト処理部１５及びリクエスト処理制御部１６は、例えば、図１のコア１０１及びキャッシュ１０２により実現される。
【００３６】
ここで、図２に示したプロセッサ１０の各機能をパケット送信時の機能と受信時の機能とに分けて説明する。まず、図３を参照して、プロセッサ１０のＩＯ処理のパケットの送信時の機能について説明する。図３は、４つのＩＯコントローラを有するプロセッサにおけるパケット送信時の機能のブロック図である。図３では、４つのＩＯコントローラ１０３は、ＩＯコントローラ１３１〜１３４として表される。
【００３７】
構成制御レジスタ１０５は、動作モード情報レジスタ１５１、ＣＨＩＰＩＤレジスタ１５２及び宛先リストレジスタ１５３を有する。この動作モード情報レジスタ１５１を有する構成制御レジスタ１０５が、「動作モード決定部」の一例にあたる。
【００３８】
ここで、動作モード情報レジスタ１５１に登録される各動作モードについて説明する。４つのＩＯコントローラ１０３を有するプロセッサ１０は、パケットのフォーマットとして６ビットのＣＨＩＰＩＤと２ビットのＩＯ−ＩＤを用いて送信先や送信元を表すことが決められる。これに対して、２つのＩＯコントローラ１０３を有するプロセッサ１０は、パケットのフォーマットとして６ビットのＣＨＩＰＩＤと１ビットのＩＯ−ＩＤを用いて送信先や送信元を表すことが決められる。このＣＨＩＰＩＤが、「演算処理装置識別情報」の一例にあたる。また、ＩＯ−ＩＤが、「制御部識別情報」の一例にあたる。
【００３９】
そこで、４つのＩＯコントローラ１０３を有するプロセッサ１０は、他の４つのＩＯコントローラ１０３を有するプロセッサ１０と通信する場合、動作モードとして通常モードが選択される。すなわち、通常モードの場合、プロセッサ１０は、６ビットのＣＨＩＰＩＤと２ビットのＩＯ−ＩＤを用いて送信先や送信元を表すパケットのフォーマットを用いる。この通常モードで使用されるＣＨＩＰＩＤのサイズの６ビットが、「第１サイズ」の一例にあたる。また、ＩＯ−ＩＤのサイズの２ビットが、「第２サイズ」の一例にあたる。
【００４０】
一方、４つのＩＯコントローラ１０３を有するプロセッサ１０は、２つのＩＯコントローラ１０３を有するプロセッサ１０と通信する可能性がある場合、動作モードとして互換モードが選択される。すなわち、互換モードの場合、プロセッサ１０は、６ビットのＣＨＩＰＩＤと１ビットのＩＯ−ＩＤを用いて送信先や送信元を表すパケットのフォーマットを用いる。ただし、この場合、６ビットのＣＨＩＰＩＤのうち最下位の１ビットは、実際には４つのＩＯコントローラ１０３を有するプロセッサ１０が有するＩＯコントローラ１０３のＩＯ−ＩＤの上位１ビットに割り当てられる。この通常モードで使用されるＩＯ−ＩＤのサイズの１ビットが、「第３サイズ」の一例にあたる。そして、通常モードと互換モードにおけるＩＯ−ＩＤのサイズの差である１ビットが、「所定サイズ」の一例にあたる。さらに、互換モードにおける６ビットのＣＨＩＰＩＤの最下位の１ビットが、「所定サイズの領域」の一例にあたる。
【００４１】
例えば、構成制御レジスタ１０５は、動作モード情報レジスタ１５１内に、通常モードを表す値として「０」を記憶し、互換モードを表す値として「１」を記憶する。また、構成制御レジスタ１０５は、６ビットのＣＨＩＰＩＤレジスタ１５２を有する。また、宛先リストレジスタ１５３は、各プロセッサ１０のＣＨＩＰＩＤとアドレスとの対応を表す情報である。
【００４２】
また、動作モードが互換モードの場合、後述するようにＣＨＩＰＩＤレジスタ１５２の最下位の１ビットの値はＩＯコントローラ１０３の上位１ビットを表す値に変換される。そのため、互換モードの場合、ＣＨＩＰＩＤレジスタ１５２は、上位５ビットにより区別される値が与えられる。すなわち、ＣＨＩＰＩＤレジスタ１５２の最下位の１ビットの値は、予め「０」などと決められる。これに対して、動作モードが通常モードであれば、ＣＨＩＰＩＤレジスタ１５２は６ビット全てを使用して表される。
【００４３】
図３に戻って説明を続ける。ＩＯコントローラ１３１〜１３４は、同じ機能を有するので、ここでは、これらを区別せずにＩＯコントローラ１０３として説明する。ＩＯコントローラ１０３は、２ビットで表される自己のＩＯコントローラ番号を記憶する。
【００４４】
ＩＯコントローラ１０３は、実行した処理に関してパケットの送信を決定する。そして、ＩＯコントローラ１０３は、自己のＩＯコントローラ番号及び宛先のアドレスとともにＩＯリクエスト生成部１４にパケット送信の要求を出力する。ＩＯリクエスト生成部１４は、調停回路４１、選択回路４２、不使用情報出力部４３、選択回路４４及びパケット生成部４５を有する。
【００４５】
調停回路４１は、ＩＯコントローラ１０３（ＩＯコントローラ１３１〜１３４）からパケットの送信要求を取得する。このパケットの送信要求には、ＩＯコントローラ番号及び宛先のアドレスが付属する。そして、調停回路４１は、受信した送信要求の調停を行い、出力するパケットの送信要求を決定する。その後、調停回路４１は、出力を決定したパケットの送信元のＩＯコントローラ１０３のＩＯコントローラ番号の上位１ビットの値を選択回路４２及び選択回路４４へ出力する。また、調停回路４１は、出力を決定したパケットの送信元のＩＯコントローラ１０３のＩＯコントローラ番号の下位１ビットの値を送信元ＩＤ生成部４５１へ出力する。また、調停回路４１は、送信先のアドレスを送信先ＩＤ生成部４５２及びリクエスト情報生成部４５３へ出力する。さらに、調停回路４１は、リクエスト種やリクエストＩＤなどを含むリクエスト情報をリクエスト情報生成部４５３へ出力する。
【００４６】
選択回路４２は、動作モードに応じてＣＨＩＰＩＤの情報を決定する回路である。選択回路４２は、構成制御レジスタ１０５の動作モード情報レジスタ１５１が有する値を取得する。すなわち、選択回路４２は、動作モードを構成制御レジスタ１０５から取得する。さらに、選択回路４２は、ＣＨＩＰＩＤレジスタ１５２の最下位１ビットの値を構成制御レジスタ１０５から取得する。また、選択回路４２は、パケットの送信元のＩＯコントローラ１０３のＩＯコントローラ番号の上位１ビットの値の入力を調停回路４１から受ける。
【００４７】
取得した動作モード情報レジスタ１５１の値が「０」である、すなわち通常モードの場合、選択回路４２は、取得したプロセッサ１０のＣＨＩＰＩＤの最下位１ビットの値を送信元ＩＤ生成部４５１へ出力する。
【００４８】
これに対して、取得した動作モード情報レジスタ１５１の値が「１」である、すなわち互換モードの場合、選択回路４２は、ＩＯコントローラ番号の上位１ビットの値を送信元ＩＤ生成部４５１へ出力する。
【００４９】
不使用情報出力部４３は、不使用を表す情報を出力値として出力する回路である。
【００５０】
選択回路４４は、動作モードに応じてＩＯ−ＩＤの情報を決定する回路である。選択回路４４は、動作モード情報レジスタ１５１の値を構成制御レジスタ１０５から取得する。さらに、選択回路４４は、パケットの送信元のＩＯコントローラ１０３のＩＯコントローラ番号の上位１ビットの値の入力を調停回路４１から受ける。また、選択回路４４は、不使用を表す情報の入力を不使用情報出力部４３から受ける。
【００５１】
取得した動作モード情報レジスタ１５１の値が「０」である、すなわち通常モードの場合、選択回路４４は、送信元のＩＯコントローラ１０３のＩＯコントローラ番号の上位１ビットの値を送信元ＩＤ生成部４５１へ出力する。
【００５２】
これに対して、取得した動作モード情報レジスタ１５１の値が「１」である、すなわち互換モードの場合、選択回路４４は、送信元ＩＤ生成部４５１への信号の出力を行わない。
【００５３】
パケット生成部４５は、取得した情報を用いて送信するパケットを生成する回路である。パケット生成部４５は、送信元ＩＤ生成部４５１、送信先ＩＤ生成部４５２及びリクエスト情報生成部４５３を有する。パケット生成部４５は、動作モード情報レジスタ１５１の値を構成制御レジスタ１０５から取得し、動作モードを取得する。そして、パケット生成部４５は、取得した動作モードにしたがって、送信元ＩＤ生成部４５１を動作させる。
【００５４】
送信元ＩＤ生成部４５１は、動作モードにしたがってパケットに格納する送信元の送信元ＩＤを生成する。送信元ＩＤには、ＣＨＩＰＩＤとＩＯ−ＩＤが含まれる。動作モードが通常モードの場合、送信元ＩＤ生成部４５１は、６ビットのＣＨＩＰＩＤ及び２ビットのＩＯ−ＩＤを含む送信元ＩＤを生成する。一方、動作モードが互換モードの場合、送信元ＩＤ生成部４５１は、最下位の１ビットにＩＯ−ＩＤの上位１ビットを含む６ビットのＣＨＩＰＩＤとＩＯ−ＩＤの下位１ビットを１ビットのＩＯ−ＩＤとして含む送信元ＩＤを生成する。具体的には、送信元ＩＤ生成部４５１は、以下のように送信元ＩＤを生成する。
【００５５】
通常モードの場合、送信元ＩＤ生成部４５１は、ＣＨＩＰＩＤレジスタ１５２の上位５ビットの値を構成制御レジスタ１０５から取得する。また、送信元ＩＤ生成部４５１は、ＣＨＩＰＩＤレジスタ１５２の最下位１ビットの値の入力を選択回路４２から受ける。また、送信元ＩＤ生成部４５１は、ＩＯ−ＩＤの上位１ビットの値の入力を選択回路４４から受ける。さらに、送信元ＩＤ生成部４５１は、ＩＯ−ＩＤの下位１ビットの値の入力を調停回路４１から受ける。そして、送信元ＩＤ生成部４５１は、構成制御レジスタ１０５から取得した値に選択回路４４から取得した値を付加して、６ビットのＣＨＩＰＩＤを生成する。この生成されたＣＨＩＰＩＤは、ＣＨＩＰＩＤレジスタ１５２の各ビットの値に一致する。また、送信元ＩＤ生成部４５１は、選択回路４４から取得した値に調停回路４１から取得した値を付加して送信元のＩＯコントローラ１０３の２ビットのＩＯ−ＩＤを生成する。そして、送信元ＩＤ生成部４５１は、生成したＣＨＩＰＩＤに生成したＩＯ−ＩＤを付加して送信元ＩＤを生成する。
【００５６】
これに対して、互換モードの場合、送信元ＩＤ生成部４５１は、ＣＨＩＰＩＤレジスタ１５２の上位５ビットの値を構成制御レジスタ１０５から取得する。また、送信元ＩＤ生成部４５１は、ＩＯ−ＩＤの上位１ビットの入力を選択回路４２から受ける。さらに、送信元ＩＤ生成部４５１は、ＩＯ−ＩＤの下位１ビットの値の入力を調停回路４１から受ける。そして、送信元ＩＤ生成部４５１は、構成制御レジスタ１０５から取得した値に選択回路４４から取得した値を付加して、６ビットのＣＨＩＰＩＤを生成する。この生成されたＣＨＩＰＩＤは、最下位の１ビットにＩＯ−ＩＤの上位１ビットを含むことになる。また、送信元ＩＤ生成部４５１は、動作モードが互換モードであることから、ＩＯ−ＩＤを１ビットに決定する。そして、送信元ＩＤ生成部４５１は、調停回路４１から取得した値を１ビットのＩＯ−ＩＤとする。その後、送信元ＩＤ生成部４５１は、生成したＣＨＩＰＩＤに生成した１ビットのＩＯ−ＩＤを付加して送信元ＩＤを生成する。
【００５７】
送信先ＩＤ生成部４５２は、パケットに格納する送信先ＩＤを生成する。送信先ＩＤ生成部４５２は、アドレスの入力を調停回路４１から受ける。そして、送信先ＩＤ生成部４５２は、取得したアドレスに対応するＣＨＩＰＩＤを宛先リストレジスタ１５３から取得して送信先ＩＤを生成する。
【００５８】
ここで、宛先リストレジスタ１５３では、４つのＩＯコントローラを有するプロセッサ１０を宛先とするアドレスに対するＣＨＩＰＩＤの割り当ては、通常モードでは６ビットのＣＨＩＰＩＤが予め割り当てられる。また、互換モードでは、上位５ビットがＣＨＩＰＩＤの上位５ビットを表し、最下位の１ビットがＩＯ−ＩＤを表すＣＨＩＰＩＤが、アドレスに対するＣＨＩＰＩＤとして予め割り当てられる。
【００５９】
リクエスト情報生成部４５３は、パケットに格納するリクエストに関する情報を生成する。リクエスト情報生成部４５３は、アドレスの入力を調停回路４１から受ける。また、リクエスト情報生成部４５３は、データやリクエストの種別の情報やリクエストのＩＤの入力を調停回路４１から受ける。そして、リクエスト情報生成部４５３は、リクエストＩＤ、リクエスト種、アドレス及びデータをパケットに格納する状態で生成する。
【００６０】
パケット生成部４５は、リクエスト情報生成部４５３が生成したパケットＩＤ、パケット種及びアドレス、送信先ＩＤ生成部４５２が生成した送信先ＩＤ、並びに、送信元ＩＤ生成部４５１が生成した送信元ＩＤを用いてパケットのヘッダを生成する。さらに、パケット生成部４５は、生成したヘッダにデータを付加してパケットを生成する。そして、パケット生成部４５は、生成したパケットをパケット送信部１２へ出力する。
【００６１】
パケット送信部１２は、送信するパケットの入力をパケット生成部４５から受ける。そして、パケット送信部１２は、外部バスＩＦ部１１を介してＸＢチップ４へパケットを出力する。
【００６２】
このように、互換モードにおいて出力パケットの送信先ＩＤを６ビットのＣＨＩＰＩＤ及び１ビットのＩＯ−ＩＤとすることで、プロセッサ１０は、２つのＩＯコントローラ１０３を有するプロセッサ１０と通信を行うことができる。そして、２つのＩＯコントローラ１０３を有するプロセッサ１０は、ＣＨＩＰＩＤの上位５ビットとＩＯ−ＩＤの上位１ビットで生成されたＣＨＩＰＩＤを送信元のＣＨＩＰＩＤとして処理する。すなわち、実際には１つのプロセッサ１０しか存在しないが、２つのＩＯコントローラ１０３を有するプロセッサ１０は、ＣＨＩＰＩＤの上位５ビットにＩＯ−ＩＤの上位１ビットが付加された２つのプロセッサ１０と通信するように動作する。
【００６３】
次に、図４を参照して、プロセッサ１０のＩＯ処理のパケットの受信時の機能について説明する。図４は、４つのＩＯコントローラを有するプロセッサにおけるパケット受信時の機能のブロック図である。ここでは、プロセッサ１０がＩＯ処理のパケットを受信する場合を説明する。
【００６４】
構成制御レジスタ１０５は、動作モード情報レジスタ１５１及びＣＨＩＰＩＤレジスタ１５２を有する。動作モード情報レジスタ１５１及びＣＨＩＰＩＤレジスタ１５２は、送信時の場合と同様の値である。
【００６５】
外部バスＩＦ部１１は、ＣＨＩＰＩＤチェック部１１１を有する。外部バスＩＦ部１１は、ＸＢチップ４からＩＯ処理用のパケットを受信する。
【００６６】
ＣＨＩＰＩＤチェック部１１１は、動作モード情報レジスタ１５１の値を取得する。また、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先のＣＨＩＰＩＤを取得する。
【００６７】
通常モードの場合、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先のＣＨＩＰＩＤとＣＨＩＰＩＤレジスタ１５２との６ビット全てが一致するか否かを判定する。一致しない場合、外部バスＩＦ部１１は、エラーと判定しエラー応答を送信元に返す。これに対して、一致した場合、外部バスＩＦ部１１は、パケットをパケット受信部１３へ出力する。
【００６８】
一方、互換モードの場合、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先のＣＨＩＰＩＤとＣＨＩＰＩＤレジスタ１５２との上位５ビットが一致するか否かを判定する。すなわち、互換モードの場合、ＣＨＩＰＩＤチェック部１１１は、ＣＨＩＰＩＤの最下位の１ビットは無視する。一致しない場合、外部バスＩＦ部１１は、エラーと判定しエラー応答を送信元に返す。これに対して、一致した場合、外部バスＩＦ部１１は、パケットをパケット受信部１３へ出力する。
【００６９】
パケット受信部１３は、パケットの入力を外部バスＩＦ部１１から受ける。そして、パケット受信部１３は、取得したパケットをＩＯリクエスト処理部１５のＩＯコントローラ選択部５１へ出力する。
【００７０】
ＩＯリクエスト処理部１５は、受信したパケットを宛先のＩＯコントローラ１０３へ送信する回路である。ＩＯリクエスト処理部１５は、ＩＯコントローラ選択部５１及び選択回路５２を有する。
【００７１】
ＩＯコントローラ選択部５１は、ＩＯ−ＩＤ抽出部５１１、選択回路５１２及びリクエスト情報取得部５１３を有する。ＩＯコントローラ選択部５１のＩＯ−ＩＤ抽出部５１１及びリクエスト情報取得部５１３は、パケットの入力をパケット受信部１３から受ける。
【００７２】
ＩＯ−ＩＤ抽出部５１１は、受信したパケットから送信先のＩＯ−ＩＤの上位１ビットを抽出する。また、ＩＯ−ＩＤ抽出部５１１は、パケットから送信先のＣＨＩＰＩＤの最下位の１ビットを抽出する。そして、ＩＯ−ＩＤ抽出部５１１は、ＩＯ−ＩＤの上位１ビット及びＣＨＩＰＩＤの最下位の１ビットを選択回路５１２へ出力する。さらに、ＩＯ−ＩＤ抽出部５１１は、パケットからＩＯ−ＩＤの下位１ビットを抽出する。そして、ＩＯ−ＩＤ抽出部５１１は、抽出したＩＯ−ＩＤの下位１ビットの値を選択回路５２へ出力する。
【００７３】
選択回路５１２は、動作モード情報レジスタ１５１の値を構成制御レジスタ１０５から取得し、動作モードを判定する。さらに、選択回路５１２は、ＩＯ−ＩＤの上位１ビット及びＣＨＩＰＩＤの最下位の１ビットの入力をＩＯ−ＩＤ抽出部５１１から受ける。
【００７４】
通常モードの場合、選択回路５１２は、ＩＯ−ＩＤの上位１ビットを選択回路５２へ出力する。これに対して、互換モードの場合、選択回路５１２は、ＣＨＩＰＩＤの最下位の１ビットをＩＯ−ＩＤの上位１ビットとして選択回路５２へ出力する。
【００７５】
リクエスト情報取得部５１３は、受信したパケットからリクエストの内容、アドレス及びデータを取得する。そして、リクエスト情報取得部５１３は、リクエストの内容、アドレス及びデータなどのリクエスト情報を選択回路５２へ出力する。
【００７６】
選択回路５２は、ＩＯ−ＩＤの上位１ビットの入力を選択回路５１２から受ける。また、選択回路５２は、ＩＯ−ＩＤの下位１ビットの入力をＩＯ−ＩＤ抽出部５１１から受ける。そして、選択回路５２は、受信したＩＯ−ＩＤの上位１ビット及び下位１ビットで表されるＩＯコントローラ番号を有するＩＯコントローラ１０３をＩＯコントローラ１３１〜１３４の中から選択する。
【００７７】
また、選択回路５２は、リクエスト情報の入力をリクエスト情報取得部５１３から受ける。そして、選択回路５２は、選択したＩＯコントローラ１０３に対して、リクエスト情報を送信する。リクエスト情報を受信したＩＯコントローラ１０３は、リクエストにしたがい接続されるＩＯ装置（不図示）を制御する。
【００７８】
このように、互換モードの場合、ＩＯリクエスト処理部１５は、パケットに格納された送信先ＩＤのうちＣＨＩＰＩＤの最下位の１ビット及びＩＯ−ＩＤの１ビットで処理を行わせるＩＯコントローラ１０３を判定する。これにより、１ビットのＩＯ−ＩＤしか有さないフォーマットのパケットを受信しても、ＩＯリクエスト処理部１５は、４つのＩＯコントローラ１３１〜１３４の中から適切なＩＯコントローラ１０３を選択できる。
【００７９】
また、２つのＩＯコントローラを有するプロセッサ１０は、送信先の６ビットのＣＨＩＰＩＤを有するプロセッサ１０の１ビットのＩＯ−ＩＤで表されるＩＯコントローラ１０３に対してパケットを送信する。ただし、１つのプロセッサ１０が有するＩＯコントローラ１０３に対するパケットのＣＨＩＰＩＤは上位５ビットが同様で、最下位の１ビットが異なるＣＨＩＰＩＤである。そこで、４つのＩＯコントローラ１０３を有するプロセッサ１０は、２つのＩＯコントローラを有するプロセッサ１０が送信した自己宛のパケットを自己宛と判定でき、且つ、指定されたＩＯコントローラ１０３を選択できる。
【００８０】
ここで、図５を参照して、動作モード毎のパケットについて再度説明する。図５は、動作モード毎のパケットを説明するための図である。
【００８１】
パケット２０１は、フォーマットの一例を示す。パケット２０１は、ヘッダ部２０２及びデータ部２０３を有する。ヘッダ部２０２には、パケットＩＤ、パケット種、送信先、送信元及びアドレスが格納される。また、データ部２０３には、データが格納される。
【００８２】
いずれの動作モードにおいても、ヘッダ部２０２のパケットＩＤ、パケット種及びアドレスは同様に生成される。またデータ部２０３には同様にデータが格納される。
【００８３】
これに対して、互換モードであれば、４つのＩＯコントローラ１０３を有するプロセッサ１０が送信元の場合、ヘッダ部２０２の送信元にＩＤ２０４が格納される。また、４つのＩＯコントローラ１０３を有するプロセッサ１０が送信先の場合、ヘッダ部２０２の送信先にＩＤ２０４が格納される。
【００８４】
具体的には、ＩＤ２０４は、それが示す対象が４つのＩＯコントローラ１０３の場合、ＣＨＩＰＩＤ２０５として割り当てられた６ビットのうち最下位の１ビットであるビット２０６がＩＯ−ＩＤの上位１ビットを表す。したがって、示す対象が４つのＩＯコントローラ１０３の場合、ＩＤ２０４は、ビット２０６とＩＯ−ＩＤ２０７とで２ビットのＩＯ−ＩＤを表す。
【００８５】
ここで、表２０８は、互換モードの場合の送信先又は送信元の一例を表す。表２０８のＣＨＩＰＩＤは、ＩＤ２０４のＣＨＩＰＩＤ２０５にあたり、ＩＯ−ＩＤは、ＩＤ２０４のＩＯ−ＩＤ２０７にあたる。すなわち、ＣＨＩＰＩＤが「０ｘ０」のプロセッサ１０に対して、「０ｘ０」及び「０ｘ１」の２つのＩＯ−ＩＤが割り当てられる。さらに、ＣＨＩＰＩＤとして「０ｘ０」の最下位の１ビットと異なる「０ｘ１」を有するプロセッサ１０に対して、「０ｘ０」及び「０ｘ１」の２つのＩＯ−ＩＤが割り当てられる。このように、互換モードの場合、２つのＣＨＩＰＩＤと２つのＩＯ−ＩＤとの組によって、実際には１つのプロセッサ１０の中の４つのＩＯコントローラ１０３を表す。
【００８６】
一方、通常モードであれば、ヘッダ部２０２の送信元及び送信先にＩＤ２１０が格納される。具体的には、ＩＤ２１０は、ＣＨＩＰＩＤ２１１として割り当てられた６ビットとＩＯ−ＩＤ２１２として割り当てられた２ビットとで表される。
【００８７】
ここで、表２１３は、通常モードの場合の送信先又は送信元の一例を表す。表２１３のＣＨＩＰＩＤは、ＩＤ２１０のＣＨＩＰＩＤ２１１にあたり、ＩＯ−ＩＤは、ＩＤ２１０のＩＯ−ＩＤ２１２にあたる。すなわち、ＣＨＩＰＩＤが「０ｘ０」のプロセッサ１０に対して、「０ｘ０」〜「０ｘ３」の４つのＩＯ−ＩＤが割り当てられる。このように、通常モードの場合、１つのＣＨＩＰＩＤと４つのＩＯ−ＩＤとの組によって、１つのプロセッサ１０の中の４つのＩＯコントローラ１０３を表す。
【００８８】
さらに、図６を参照して、他のプロセッサ１０から見た４つのＩＯコントローラ１０３を有するプロセッサ１０の状態を説明する。図６は、他のプロセッサから見た４つのＩＯコントローラを有するプロセッサの状態を説明するための図である。
【００８９】
図６の状態２２０は、実際の４つのＩＯコントローラ１０３を有するプロセッサ１０の状態を表す。また、状態２３０は、２つのＩＯコントローラ１０３を有するプロセッサ１０から見た４つのＩＯコントローラ１０３を有するプロセッサ１０の状態を表す。ここで、プロセッサ１０は対応するメモリ３をそれぞれが有する。そこで、図６では、組み合わせが分かり易いようにプロセッサ１０の中に対応するメモリ３を含ませて記載している。また、プロセッサ１０は、１つのコア１０１及び１つの対応するメモリ３を有する場合で示したが、コア１０１及びメモリ３の数は他の数でもよい。
【００９０】
４つのＩＯコントローラ１０３を有するプロセッサ１０は、実際には、状態２２０に示すように、１つのコア１０１及び１つのメモリ３を有する。さらに、プロセッサ１０は、コア１０１及びメモリ３に対して、４つのＩＯコントローラ１３１〜１３４を有する。
【００９１】
一方、互換モードの場合、１つのプロセッサ１０は、最下位の１ビットが異なる６ビットのＣＨＩＰＩＤと１ビットのＩＯ−ＩＤによって、送信先及び送信元が表される。この場合、他のプロセッサ１０は、４つのＩＯコントローラ１０３を有するプロセッサ１０のＩＯコントローラ１０３を２つのＣＨＩＰＩＤ及び２つのＩＯ−ＩＤによって判別する。すなわち、プロセッサ１０は、状態２３０に示すように、仮想のプロセッサ２３１及び２３２に分けられて認識される。さらに、仮想のプロセッサ２３１及び２３２それぞれにＩＯコントローラ１３１及び１３２、もしくは、ＩＯコントローラ１３３及び１３４が含まれる。そして、仮想のプロセッサ２３１又は２３２の何れかのＣＨＩＰＩＤは、プロセッサ１０のＣＨＩＰＩＤと一致する。この場合、仮想のプロセッサ２３１のＣＨＩＰＩＤとプロセッサ１０のＣＨＩＰＩＤとが一致するものとすると、仮想のプロセッサ２３１は、コア１０１及びメモリ３を有するといえる。一方、仮想のプロセッサ２３２は、実際にはないＣＨＩＰＩＤで識別されるため、コア１０１及びメモリ３を有さないプロセッサとなる。
【００９２】
このように、互換モードの場合、他のプロセッサ１０は、仮想のプロセッサ２３１のＩＯコントローラ１３１及び１３２、並びに、仮想のプロセッサ２３２のＩＯコントローラ１３３及び１３４を通信相手とする。これにより、他のプロセッサ１０は、実際のプロセッサ１０のＩＯコントローラ１３１〜１３４と通信を行うことができる。
【００９３】
また、パケットによって送られてくるリクエストには、ＩＯ処理以外の他の処理も含まれる。そのため、４つのＩＯコントローラ１０３を有するプロセッサ１０は、他の処理のリクエストが、通常モード及び互換モードの何れのフォーマットのパケットで送られてきた場合でも、それらを適切に処理する機能を有する。そこで、図７を参照して、ＩＯ処理以外の他の処理のリクエストを処理する場合の４つのＩＯコントローラ１０３を有するプロセッサ１０について説明する。図７は、４つのＩＯコントローラを有するプロセッサにおけるリクエスト処理時の機能のブロック図である。
【００９４】
構成制御レジスタ１０５は、動作モード情報レジスタ１５１及びＣＨＩＰＩＤレジスタ１５２を有する。動作モード情報レジスタ１５１及びＣＨＩＰＩＤレジスタ１５２は、送信時の場合と同様の値である。
【００９５】
外部バスＩＦ部１１は、ＣＨＩＰＩＤチェック部１１１を有する。外部バスＩＦ部１１は、ＸＢチップ４からＩＯ処理用のパケットを受信する。
【００９６】
ＣＨＩＰＩＤチェック部１１１は、動作モード情報レジスタ１５１の値を取得し、動作モードを判定する。また、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先のＣＨＩＰＩＤを取得する。
【００９７】
通常モードの場合、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先のＣＨＩＰＩＤとＣＨＩＰＩＤレジスタ１５２との６ビット全てが一致するか否かを判定する。一致しない場合、外部バスＩＦ部１１は、エラーと判定しエラー応答を送信元に返す。これに対して、一致した場合、外部バスＩＦ部１１は、パケットをパケット受信部１３へ出力する。
【００９８】
一方、互換モードの場合、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先のＣＨＩＰＩＤとＣＨＩＰＩＤレジスタ１５２との上位５ビットが一致するか否かを判定する。すなわち、互換モードの場合、ＣＨＩＰＩＤチェック部１１１は、ＣＨＩＰＩＤの最下位の１ビットは無視する。一致しない場合、外部バスＩＦ部１１は、エラーと判定しエラー応答を送信元に返す。これに対して、一致した場合、外部バスＩＦ部１１は、パケットをパケット受信部１３へ出力する。
【００９９】
パケット受信部１３は、リクエストのパケットの入力を外部バスＩＦ部１１から受ける。そして、パケット受信部１３は、リクエストのパケットをリクエスト処理制御部１６の応答判定部６１及び選択回路６２へ出力する。
【０１００】
リクエスト処理制御部１６は、応答判定部６１、選択回路６２、受信バッファ６３、リクエスト処理部６４、リクエスト応答部６５、受信バッファ６６及び仮想チップ宛リクエスト応答部６７を有する。さらに、応答判定部６１は、ＣＨＩＰＩＤ抽出部６１１及びＡＮＤ回路６１２を有する。
【０１０１】
ＣＨＩＰＩＤ抽出部６１１は、パケットの入力をパケット受信部１３から受ける。そして、ＣＨＩＰＩＤ抽出部６１１は、取得したパケットから送信先のＣＨＩＰＩＤを抽出し、さらに、抽出したＣＨＩＰＩＤから最下位の１ビットの値を取得する。その後、ＣＨＩＰＩＤ抽出部６１１は、取得した送信先のＣＨＩＰＩＤの最下位の１ビットの値をＡＮＤ回路６１２へ出力する。
【０１０２】
ＡＮＤ回路６１２は、動作モード情報レジスタ１５１の値の入力を受ける。ここでは、ＡＮＤ回路６１２は、動作モード情報レジスタ１５１の値として、通常モードの場合「０」の入力を受け、互換モードの場合「１」の入力を受ける。また、ＡＮＤ回路６１２は、送信先のＣＨＩＰＩＤの最下位の１ビットの値の入力をＣＨＩＰＩＤ抽出部６１１から受ける。
【０１０３】
次に、ＡＮＤ回路６１２は、動作モード情報の値と送信先のＣＨＩＰＩＤの最下位の１ビットの値との論理積を求める。そして、ＡＮＤ回路６１２は、求めた論理積の結果を選択回路６２へ出力する。通常モードであれば、ＡＮＤ回路６１２は、「０」を選択回路６２へ出力する。また、互換モードであって、送信先のＣＨＩＰＩＤの最下位の１ビットの値が「０」の場合、ＡＮＤ回路６１２は、「０」を選択回路６２へ出力する。これに対して、互換モードであって、送信先のＣＨＩＰＩＤの最下位の１ビットの値が「１」の場合、ＡＮＤ回路６１２は、「１」を選択回路６２へ出力する。ただし、ここではプロセッサ１０の６ビットで表される実際のＣＨＩＰＩＤの最下位の１ビットが「０」であるとする。
【０１０４】
選択回路６２は、動作モード情報の値と送信先のＣＨＩＰＩＤの最下位の１ビットの値との論理積の結果の入力をＡＮＤ回路６１２から受ける。また、選択回路６２は、リクエストのパケットの入力をパケット受信部１３から受ける。
【０１０５】
選択回路６２は、ＡＮＤ回路６１２からの入力が「１」の場合、リクエストのパケットを受信バッファ６３へ出力する。一方、ＡＮＤ回路６１２からの入力が「０」の場合、選択回路６２は、リクエストのパケットを受信バッファ６６へ出力する。すなわち、通常モードの場合、又は互換モードで且つＣＨＩＰＩＤの最下位の１ビットが「０」の場合、選択回路６２は、パケットを受信バッファ６３へ出力する。
【０１０６】
ここで、受信バッファ６３は、実チップＩＤ宛のリクエスト処理である通常のリクエスト処理を実行する経路に繋がる。また、受信バッファ６６は、仮想チップＩＤ宛のリクエストに対する処理を実行する経路に繋がる。すなわち、選択回路６２は、図８に示すテーブルに示す経路選択のようにパケットを出力する経路を選択する。図８は、リクエスト処理経路判定のテーブルを示す図である。ここで、ＣＨＩＰＩＤ［０］は、ＣＨＩＰＩＤの最下位の１ビットであることを表す。すなわち、動作モードが通常モードの場合、選択回路６２は、実チップＩＤ宛のリクエスト処理経路にパケットを送信する。また、動作モードが互換モードであって、ＣＨＩＰＩＤの最下位の１ビットが「０」の場合、選択回路６２は、実チップＩＤ宛のリクエスト処理経路にパケットを送信する。また、動作モードが互換モードであって、ＣＨＩＰＩＤの最下位の１ビットが「１」の場合、仮想チップＩＤ宛のリクエスト処理経路にパケットを送信する。
【０１０７】
なぜなら、通常モードの場合、６ビットのＣＨＩＰＩＤ及び２ビットのＩＯ−ＩＤを送信先として用いるフォーマットのパケットを用いて通信を行うため、自己宛てのパケットである。そこで、プロセッサ１０は、そのパケットを実チップＩＤ宛として通常の処理を施すことができる。また、互換モードであっても、ＣＨＩＰＩＤの最下位の１ビットが「０」であれば、自己のＣＨＩＰＩＤと一致するため、プロセッサ１０は、自己宛のパケットとして処理することができる。そこで、プロセッサ１０は、そのパケットを実チップＩＤ宛として通常の処理を施すことができる。これに対して、互換モードであり、且つ、ＣＨＩＰＩＤの最下位の１ビットが「１」の場合、受信したパケットは、実際には存在しないプロセッサ１０を送信先とするパケットである。そこで、プロセッサ１０は、そのパケットについて仮想チップＩＤ宛てのリクエストに対する処理を実行することになる。
【０１０８】
受信バッファ６３は、リクエストのパケットの入力を選択回路６２から受ける。そして、受信バッファ６３は、取得したリクエストのパケットを順次蓄積していく。
【０１０９】
リクエスト処理部６４は、受信バッファ６３に格納されたリクエストのパケットの中から１つ選択し、リクエストを取得する。そして、リクエスト処理部６４は、取得したリクエストに対して通常の処理を実行する。その後、リクエスト処理部６４は、処理完了の通知をリクエスト応答部６５へ出力する。リクエスト処理部６４は、受信バッファ６３に格納されたリクエストについて順次処理を行う。
【０１１０】
リクエスト応答部６５は、処理完了の通知の入力をリクエスト処理部６４から受ける。そして、リクエスト応答部６５は、処理完了の通知に応じてリクエストに対する応答のパケットを生成する。その後、リクエスト応答部６５は、生成した応答のパケットをパケット送信部１２へ出力する。
【０１１１】
受信バッファ６６は、リクエストのパケットの入力を選択回路６２から受ける。そして、受信バッファ６６は、取得したリクエストのパケットを順次蓄積していく。
【０１１２】
仮想チップ宛リクエスト応答部６７は、受信バッファ６６に格納されたリクエストのパケットの中から１つ選択し、リクエストを取得する。そして、仮想チップ宛リクエスト応答部６７は、取得したリクエストに対して仮想チップＩＤ宛てのリクエスト処理を実行する。仮想チップ宛リクエスト応答部６７は、処理の実行にしたがいリクエストに対する応答のパケットを生成する。その後、仮想チップ宛リクエスト応答部６７は、生成した応答のパケットをパケット送信部１２へ出力する。仮想チップ宛リクエスト応答部６７は、受信バッファ６６に格納されたリクエストについて順次処理を行う。
【０１１３】
ここで、図９を参照して、リクエスト処理部６４、リクエスト応答部６５及び仮想チップ宛リクエスト応答部６７によるリクエスト応答について説明する。図９は、動作モード毎のリクエスト応答処理を説明するための図である。ここで、ＣＨＩＰＩＤ［０］＝０は、ＣＨＩＰＩＤの最下位の１ビットの値が０であることを表す。また、ＣＨＩＰＩＤ［０］＝１は、ＣＨＩＰＩＤの最下位の１ビットの値が１であることを表す。
【０１１４】
図９に示すように、ＩＯ処理以外のリクエストには、例えば、メモリアクセス要求、キャッシュ制御要求、アーキテクチャレジスタへのアクセス要求及びコア１０１に対する割込要求がある。ここで、アーキテクチャレジスタは、プロセッサ１０上に搭載されたソフトウェアレベルで参照可能なレジスタである。リクエスト処理部６４及び仮想チップ宛リクエスト応答部６７は、図５に示すパケット２０１のヘッダ部２０２におけるパケット種のフィールドに格納された値でリクエストの種類を判定する。
【０１１５】
通常モードの場合、リクエスト処理部６４及びリクエスト応答部６５は以下のような処理を行い応答を返す。例えば、メモリアクセス要求の場合、リクエスト応答部６５は、要求のあったメモリアドレスのデータを応答する。また、キャッシュ制御要求の場合、リクエスト処理部６４は、キャッシュ１０２が指定されたデータを保持するかを調べ、保持する場合破棄する。そして、リクエスト応答部６５は、要求元へ完了応答を返す。アーキテクチャレジスタへのアクセス要求の場合、リクエスト処理部６４は、指定されたレジスタに対する読み出し又は書き込みを行う。そして、リクエスト応答部６５は、要求元へ完了応答を返す。コア１０１に対する割込要求の場合、リクエスト処理部６４は、指定された割り込みを発生させる。そして、リクエスト応答部６５は、パケットの送信元に受信完了を示す応答を返す。
【０１１６】
また、互換モードであって、ＣＨＩＰＩＤの最下位の１ビットが「０」の場合、リクエスト処理部６４及びリクエスト応答部６５は、通常モードと同様のリクエスト処理を行い応答を返す。ここで、ＣＨＩＰＩＤの最下位の１ビットの値としての「０」が、「所定値」の一例にあたる。
【０１１７】
これに対して、互換モードであって、ＣＨＩＰＩＤの最下位の１ビットが「１」の場合、仮想チップ宛リクエスト応答部６７は、以下のような処理を行い応答を返す。メモリアクセス要求の場合、仮想チップ宛リクエスト応答部６７は、要求されたメモリアドレスに実メモリがないことを示すエラー応答を返す。キャッシュ制御要求の場合、仮想チップ宛リクエスト応答部６７は、キャッシュ１０２に対して何もせずに、要求元に完了応答を返す。アーキテクチャレジスタへのアクセス要求の場合、仮想チップ宛リクエスト応答部６７は、指定したレジスタが存在しないことを示すエラー応答を要求元に返す。ただし、実装によっては、仮想チップ宛リクエスト応答部６７は、アーキテクチャレジスタへのアクセス要求の場合、書き込みデータは捨て、読み出し値は全て０として、正常応答を要求元に返してもよい。コア１０１に対する割込要求の場合、仮想チップ宛リクエスト応答部６７は、受信した割り込みは破棄し、パケットの送信元に受信したことを示す応答を返してもよい。ただし、実装によっては、仮想チップ宛リクエスト応答部６７は、コア１０１に対する割込要求の場合、エラー応答をパケットの送信元に返してもよい。
【０１１８】
また、図９では、リクエスト処理制御部１６による受信したパケットに対する応答処理について説明したが、リクエスト処理制御部１６は、プロセッサ１０が送信元となるリクエストのパケットの生成も行う。この場合、リクエスト処理制御部１６は、ＣＨＩＰＩＤレジスタ１５２を構成制御レジスタ１０５から取得する。そして、リクエスト処理制御部１６は、取得した６ビットのＣＨＩＰＩＤを送信元の識別情報として用い、送信先の識別情報はアドレスに対応するＣＨＩＰＩＤを宛先リストレジスタ１５３から取得してパケットを生成する。また、リクエスト処理制御部１６は、その他の情報は、送信するリクエストに合わせて作成しパケットを生成する。そして、リクエスト処理制御部１６は、生成したパケットをパケット送信部１２を介してＸＢチップ４に送信する。
【０１１９】
次に、図１０を参照して、本実施例に係る４つのＩＯコントローラ１０３を有するプロセッサ１０によるパケットの発行処理の流れについて説明する。図１０は、４つのＩＯコントローラを有するプロセッサによるパケットの発行処理のフローチャートである。
【０１２０】
ＩＯコントローラ１０３は、ＩＯリクエスト生成部１４にリクエストを発信する（ステップＳ１０１）。
【０１２１】
ＩＯリクエスト生成部１４は、構成制御レジスタ１０５の動作モード情報レジスタ１５１の値から動作モードが通常モードか否かを判定する（ステップＳ１０２）。
【０１２２】
動作モードが通常モードの場合（ステップＳ１０２：肯定）、ＩＯリクエスト生成部１４は、リクエストの発信元のＩＯコントローラ１０３のＩＯコントローラ番号で２ビットのＩＯ−ＩＤを作成する（ステップＳ１０３）。
【０１２３】
さらに、ＩＯリクエスト生成部１４は、ＣＨＩＰＩＤレジスタ１５２を表す６ビット全てを構成制御レジスタ１０５から取得する（ステップＳ１０４）。
【０１２４】
次に、ＩＯリクエスト生成部１４は、６ビットのＣＨＩＰＩＤ及び２ビットのＩＯ−ＩＤを用いて送信元のＩＤを生成する（ステップＳ１０５）。その後、ＩＯリクエスト生成部１４は、ステップＳ１０９へ進む。
【０１２５】
これに対して、動作モードが互換モードの場合（ステップＳ１０２：否定）、ＩＯリクエスト生成部１４は、リクエストの発信元のＩＯコントローラ１０３のＩＯコントローラ番号の下位１ビットを１ビットのＩＯ−ＩＤに割り当てる。さらに、ＩＯリクエスト生成部１４は、リクエストの発信元のＩＯコントローラ１０３のＩＯコントローラ番号の上位１ビットをＣＨＩＰＩＤの最下位の１ビットに割り当てる（ステップＳ１０６）。
【０１２６】
さらに、ＩＯリクエスト生成部１４は、ＣＨＩＰＩＤレジスタ１５２の上位５ビットを構成制御レジスタ１０５から取得する（ステップＳ１０７）。
【０１２７】
次に、ＩＯリクエスト生成部１４は、ＩＯコントローラ番号の上位１ビット及びＣＨＩＰＩＤの上位５ビットを有するＣＨＩＰＩＤ、並びに、ＩＯコントローラ番号の下位１ビットを有する１ビットのＩＯ−ＩＤを用いて送信元のＩＤを生成する（ステップＳ１０８）。
【０１２８】
次に、ＩＯリクエスト生成部１４は、アドレスに対応するＣＨＩＰＩＤを構成制御レジスタ１０５の宛先リストレジスタ１５３から取得する（ステップＳ１０９）。
【０１２９】
そして、ＩＯリクエスト生成部１４は、リクエストのパケットを生成する（ステップＳ１１０）。その後、ＩＯリクエスト生成部１４は、生成したパケットをパケット送信部１２へ出力する。
【０１３０】
パケット送信部１２は、パケットをＩＯリクエスト生成部１４から取得する。そして、パケット送信部１２は、外部バスＩＦ部１１を介してＸＢチップ４へパケットを送信することで、パケットの発行を行う（ステップＳ１１１）。
【０１３１】
次に、図１１を参照して、本実施例に係る４つのＩＯコントローラ１０３を有するプロセッサ１０によるＩＯ処理要求のパケットの受信処理の流れについて説明する。図１１は、４つのＩＯコントローラを有するプロセッサによるＩＯ処理要求のパケットの受信処理のフローチャートである。
【０１３２】
外部バスＩＦ部１１は、ＸＢチップ４からリクエストのパケットを受信する（ステップＳ２０１）。
【０１３３】
外部バスＩＦ部１１のＣＨＩＰＩＤチェック部１１１は、構成制御レジスタ１０５の動作モード情報レジスタ１５１の値から動作モードが通常モードか否かを判定する（ステップＳ２０２）。
【０１３４】
動作モードが通常モードの場合(ステップＳ２０２：肯定)、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先におけるＣＨＩＰＩＤの６ビット全てが一致するか否かを判定する（ステップＳ２０３）。ＣＨＩＰＩＤが一致しない場合（ステップＳ２０３：否定）、外部バスＩＦ部１１は、エラー応答をパケットの送信元へ返す（ステップＳ２０４）。
【０１３５】
これに対して、ＣＨＩＰＩＤが一致した場合（ステップＳ２０３：肯定）、外部バスＩＦ部１１は、パケット受信部１３へパケットを出力する。そして、パケット受信部１３は、パケットをＩＯリクエスト処理部１５へ出力する。ＩＯリクエスト処理部１５は、パケットの送信先のＩＤに格納された２ビットのＩＯ−ＩＤを宛先のＩＯコントローラ番号として取得する（ステップＳ２０５）。その後、ＩＯリクエスト処理部１５は、ステップＳ２０９へ進む。
【０１３６】
一方、動作モードが互換モードの場合(ステップＳ２０２：否定)、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先におけるＣＨＩＰＩＤの上位５ビットが一致するか否かを判定する（ステップＳ２０６）。ＣＨＩＰＩＤが一致しない場合（ステップＳ２０６：否定）、外部バスＩＦ部１１は、エラー応答をパケットの送信元へ返す（ステップＳ２０７）。
【０１３７】
これに対して、ＣＨＩＰＩＤが一致した場合(ステップＳ２０６：肯定)、外部バスＩＦ部１１は、パケット受信部１３へパケットを出力する。そして、パケット受信部１３は、パケットをＩＯリクエスト処理部１５へ出力する。ＩＯリクエスト処理部１５は、パケットの送信先のＩＤに格納された１ビットのＩＯ−ＩＤをＩＯコントローラ番号の下位１ビットとして取得する。さらに、ＩＯリクエスト処理部１５は、ＣＨＩＰＩＤの最下位の１ビットをＩＯコントローラ番号の上位１ビットとして取得する（ステップＳ２０８）。
【０１３８】
次に、ＩＯリクエスト処理部１５は、取得したＩＯコントローラ番号を有するＩＯコントローラ１０３へリクエストのパケットを転送する（ステップＳ２０９）。ＩＯコントローラ１０３は、受信したパケットにより示されるリクエストに応じてＩＯ装置を制御する。
【０１３９】
次に、図１２を参照して、本実施例に係る４つのＩＯコントローラ１０３を有するプロセッサ１０によるリクエストの受信処理の流れについて説明する。図１２は、４つのＩＯコントローラを有するプロセッサによるリクエストの受信処理のフローチャートである。
【０１４０】
外部バスＩＦ部１１は、リクエストのパケットを受信する（ステップＳ３０１）。
【０１４１】
ＣＩＨＰＩＤチェック部１１１は、構成制御レジスタ１０５の動作モード情報レジスタ１５１の値から、動作モードが通常モードか否かを判定する（ステップＳ３０２）。
【０１４２】
動作モードが通常モードの場合（ステップＳ３０２：肯定）、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先におけるＣＨＩＰＩＤの６ビット全てが一致するか否かを判定する（ステップＳ３０３）。ＣＨＩＰＩＤが一致しない場合（ステップＳ３０３：否定）、外部バスＩＦ部１１は、エラー応答をパケットの送信元へ返す（ステップＳ３０４）。
【０１４３】
これに対して、ＣＨＩＰＩＤが一致した場合（ステップＳ３０３：肯定）、外部バスＩＦ部１１は、パケット受信部１３へパケットを出力する。そして、パケット受信部１３は、パケットをリクエスト処理制御部１６へ出力する。リクエスト処理制御部１６は、実チップＩＤ宛のリクエスト処理を実行する（ステップＳ３０５）。
【０１４４】
一方、動作モードが互換モードの場合(ステップＳ３０２：否定)、ＣＨＩＰＩＤチェック部１１１は、受信したパケットの送信先におけるＣＨＩＰＩＤの上位５ビットが一致するか否かを判定する（ステップＳ３０６）。ＣＨＩＰＩＤが一致しない場合（ステップＳ３０６：否定）、外部バスＩＦ部１１は、エラー応答をパケットの送信元へ返す（ステップＳ３０７）。
【０１４５】
これに対して、ＣＨＩＰＩＤが一致した場合(ステップＳ３０６：肯定)、外部バスＩＦ部１１は、パケット受信部１３へパケットを出力する。そして、パケット受信部１３は、パケットをリクエスト処理制御部１６へ出力する。リクエスト処理制御部１６は、受信したパケットの送信先におけるＣＨＩＰＩＤの最下位の１ビットが「０」であるか否かを判定する。最下位の１ビットが「０」の場合（ステップＳ３０８：肯定）、リクエスト処理制御部１６は、ステップＳ３０５に進む。
【０１４６】
これに対して、最下位の１ビットが「１」の場合（ステップＳ３０８：否定）リクエスト処理制御部１６は、仮想チップＩＤ宛のリクエスト処理を実行する（ステップＳ３０９）。
【０１４７】
さらに、図１３〜１５を参照して、各ノードにおけるアドレスマップについて説明する。図１３は、２つのＩＯコントローラを有するプロセッサ同士の通信におけるアドレスマップを説明するための図である。図１４は、互換モードを用いた通信におけるアドレスマップを説明するための図である。図１５は、通常モードを用いた通信におけるアドレスマップを説明するための図である。
【０１４８】
図１３では、構成７０２に示すように、２つのＩＯコントローラ１０３を備えたプロセッサ１０を有するノード１が通信する場合で説明する。ここでは、ノード＃００〜＃１５を有するシステムを考えるが、構成７０２では、例として２つのノード１であるノード＃００及び＃０１の接続を記載した。また、ノード＃００及びノード＃０１は、それぞれ４つのプロセッサ１０を有する。ノード＃００は、ＣＨＩＰＩＤ＃０〜＃３が割り当てられたプロセッサ１０を有する。ノード＃０１は、ＣＨＩＰＩＤ＃４〜＃７が割り当てられたプロセッサ１０を有する。さらに、各プロセッサ１０は、２つのＩＯコントローラ番号として＃＃０及び＃＃１が割り当てられたＩＯコントローラ１０３を有する。ここでは、この２つのＩＯコントローラ１０３を、ＩＯコントローラ＃＃０及び＃＃１と表す。図１３では、ＩＯコントローラを「ＩＯＣ」と表す。また、構成７０２では、分かり易いように、プロセッサ１０に対応するメモリ３もそのプロセッサ１０のＣＨＩＰＩＤで表されるグループに属するように記載した。
【０１４９】
アドレスマップ７０１は、ＣＡ（Cacheable  Address）空間及びＮＣ（Non  Cacheable）空間を有する。
【０１５０】
ＣＡ空間には、ノード＃００〜ノード＃１５の各メモリ３に対してアドレスが割り当てられる。例えば、ノード＃００に存在するメモリ３として、ＣＨＩＰＩＤ＃０〜＃３のそれぞれのプロセッサ１０に搭載された各メモリ３に対してアドレスが割り当てられる。
【０１５１】
また、ＮＣ空間には、ノード＃００〜ノード＃１５の各プロセッサ１０の各ＩＯコントローラ＃＃０及び＃＃１に対してアドレスが割り当てられる。例えば、ノード＃００のＩＯコントローラ１０３として、ＣＨＩＰＩＤ＃０〜＃３のそれぞれのプロセッサ１０毎に、各ＩＯコントローラ＃＃０及び＃＃１に対してアドレスが割り当てられる。すなわち、２つのＩＯコントローラ１０３を有するプロセッサ１０同士の通信では、各プロセッサ１０は、直接ＣＨＩＰＩＤ＃０〜＃３のそれぞれのプロセッサ１０の各ＩＯコントローラ＃＃０及び＃＃１のＩＤをアドレスマップ７０１から取得することができる。
【０１５２】
一方、図１４では、構成７１２に示すように、２つのＩＯコントローラ１０３を備えたプロセッサ１０を有するノード１と４つのＩＯコントローラ１０３を備えたノード１とが通信する場合で説明する。ここでは、ノード＃００〜＃１５を有するシステムを考えるが、構成７１２では、例として２つのノード１のみ記載した。ここでは、ノード＃００は、２つのＩＯコントローラを有するプロセッサ１０を備えたノードとする。また、ノード＃０１は、４つのＩＯコントローラを有するプロセッサ１０を備えたノードとする。ノード＃００は、ＣＨＩＰＩＤ＃０〜＃３が割り当てられたプロセッサ１０を有する。ノード＃０１は、ＣＨＩＰＩＤ＃４及び＃６が割り当てられたプロセッサ１０を有する。さらに、ノード＃００の各プロセッサ１０は、２つのＩＯコントローラ番号として＃＃０及び＃＃１が割り当てられたＩＯコントローラ１０３を有する。また、ノード＃０１の各プロセッサ１０は、ＩＯコントローラ番号として＃＃０〜＃＃３が割り当てられたＩＯコントローラ１０３を有する。
【０１５３】
この場合も、アドレスマップ７１１のＣＡ空間には、ノード＃００〜ノード＃１５の各メモリ３に対してアドレスが割り当てられる。ただし、例えば、ＣＡ空間のＣＨＩＰＩＤ＃５メモリ及び＃７メモリのメモリ領域には実メモリが存在しないため、メモリ未実装となる。
【０１５４】
これに対して、アドレスマップ７１１のＮＣ空間には、ノード＃００のＩＯコントローラ１０３として、ＣＨＩＰＩＤ＃０〜＃３のそれぞれのプロセッサ１０毎に、各ＩＯコントローラ＃＃０及び＃＃１に対してアドレスが割り当てられる。一方、２つのＩＯコントローラ１０３を有するプロセッサ１０と通信するために、ＩＯ−ＩＤに使用できる領域は１ビットのみである。そこで、ノード＃０１のＩＯコントローラ１０３として、ＣＨＩＰＩＤ＃５及び＃７を有する仮想のプロセッサ７１及び７２が作成される。さらに、各ＣＨＩＰＩＤ＃４〜＃７がＩＯコントローラ＃＃０及び＃＃１を有するとして、各ＩＯコントローラ１０３にアドレスが割り当てられる。ここで、アドレスマップ７１１でアドレスが割り当てられたＣＨＩＰＩＤ＃５のＩＯコントローラ＃＃０及び＃＃１は、実体はＣＨＩＰＩＤ＃４のＩＯコントローラ＃＃２及び＃＃３である。また、アドレスマップ７１１でアドレスが割り当てられたＣＨＩＰＩＤ＃７のＩＯコントローラ＃＃０及び＃＃１は、実体はＣＨＩＰＩＤ＃６のＩＯコントローラ＃＃２及び＃＃３である。これにより、２つのＩＯコントローラ１０３を有するプロセッサ１０は、ＣＨＩＰＩＤ＃４及び＃６のＩＯコントローラ＃＃０〜＃＃３を表すＩＤを、６ビットのＣＨＩＰＩＤと１ビットのＩＯ−ＩＤとの組み合わせで表されるＩＤとしてアドレスマップ７１１から取得することができる。
【０１５５】
一方、図１５では、構成７２２に示すように、４つのＩＯコントローラ１０３を備えたプロセッサ１０を有するノード１同士が通信する場合で説明する。ここでは、ノード＃００〜＃１５を有するシステムを考えるが、構成７２２では、例として２つのノード１を記載した。ここでは、ノード＃００及び＃０１は、４つのＩＯコントローラを有するプロセッサ１０を備えたノードである。ノード＃００及び＃０１は、それぞれＣＨＩＰＩＤ＃０〜＃３が割り当てられたプロセッサ１０を有する。さらに、ノード＃００の各プロセッサ１０は、４つのＩＯコントローラ番号として＃＃０〜＃＃３が割り当てられたＩＯコントローラ１０３を有する。
【０１５６】
アドレスマップ７２１のＣＡ空間には、ノード＃００〜ノード＃１５の各メモリ３に対してアドレスが割り当てられる。
【０１５７】
また、ＮＣ空間には、ノード＃００〜ノード＃１５の各プロセッサ１０の各ＩＯコントローラ＃＃０〜＃＃３に対してアドレスが割り当てられる。例えば、ノード＃００のＩＯコントローラ１０３として、ＣＨＩＰＩＤ＃０〜＃３のそれぞれのプロセッサ１０毎に、各ＩＯコントローラ＃＃０〜＃＃３に対してアドレスが割り当てられる。すなわち、４つのＩＯコントローラ１０３を有するプロセッサ１０同士の通信では、各プロセッサ１０は、直接ＣＨＩＰＩＤ＃０〜＃３のそれぞれのプロセッサ１０の各ＩＯコントローラ＃＃０〜＃＃３のＩＤをアドレスマップ７２１から取得することができる。
【０１５８】
そして、アドレスマップ７０１，７１１及び７２１で表すように、各モードに合わせてアドレスマップが変更されることで、あるプロセッサ１０で実行されるソフトウェアは、アドレスマップを用いて他のプロセッサ１０と通信することができる。
【０１５９】
以上に説明したように、本実施例に係る４つのＩＯコントローラを有するプロセッサは、１ビットのＩＯ−ＩＤを使用する２つのＩＯコントローラを有するプロセッサと混在した場合にも、全てのＩＯコントローラを用いることができる。したがって、本実施例に係る４つのＩＯコントローラを有するプロセッサは、２つのＩＯコントローラを有するプロセッサと混在した場合にも、ＩＯ処理能力を十分に発揮することができる。
【０１６０】
また、本実施例に係る４つのＩＯコントローラを有するプロセッサは、２つのＩＯコントローラを有するプロセッサと混在した場合における各リクエストに対するエラー応答などの処理も適切に行うことができ、適切な動作を継続することができる。
【符号の説明】
【０１６１】
１  ノード
２  サービスプロセッサ
３  メモリ
４  ＸＢチップ
５  クロスバスイッチ
６  ＩＯ装置
１０  プロセッサ
１１  外部バスＩＦ部
１２  パケット送信部
１３  パケット受信部
１４  ＩＯリクエスト生成部
１５  ＩＯリクエスト処理部
１６  リクエスト処理制御部
４１  調停回路
４２  選択回路
４３  不使用情報出力部
４４  選択回路
４５  パケット生成部
５１  ＩＯコントローラ選択部
５２  選択回路
６１  応答判定部
６２  選択回路
６３  受信バッファ
６４  リクエスト処理部
６５  リクエスト応答部
６６  受信バッファ
６７  仮想チップ宛リクエスト応答部
１０１  コア
１０２  キャッシュ
１０３，１３１〜１３４  ＩＯコントローラ
１０４  メモリコントローラ
１０５  構成制御レジスタ
１０６  外部ＩＦ
１１１  ＣＨＩＰＩＤチェック部
１５１  動作モード情報
１５２  ＣＨＩＰＩＤ
１５３  宛先リストレジスタ
４５１  送信元ＩＤ生成部
４５２  送信先ＩＤ生成部
４５３  リクエスト情報生成部
５０１  サービスプロセッサ
５１１  ＩＯ−ＩＤ抽出部
５１２  選択回路
５１３  リクエスト情報取得部
６１１  ＣＨＩＰＩＤ抽出部
６１２  ＡＮＤ回路
【図１】
0006593222.tif 000002
【図２】
0006593222.tif 000003
【図３】
0006593222.tif 000004
【図４】
0006593222.tif 000005
【図５】
0006593222.tif 000006
【図６】
0006593222.tif 000007
【図７】
0006593222.tif 000008
【図８】
0006593222.tif 000009
【図９】
0006593222.tif 000010
【図１０】
0006593222.tif 000011
【図１１】
0006593222.tif 000012
【図１２】
0006593222.tif 000013
【図１３】
0006593222.tif 000014
【図１４】
0006593222.tif 000015
【図１５】
0006593222.tif 000016