(57)【要約】【課題】  新たな演算処理装置が開発された場合にも、入出力制御装置と演算処理装置との接続性を低下させることなく、パケットを送受信する。【解決手段】  入出力制御装置は、演算処理装置のいずれかが過去にアクセスした入出力装置と送信元である演算処理装置とが対応づけられたエントリを記憶し、メモリアクセスを行う入出力装置に対応するノード識別情報を、記憶したエントリから検索し、メモリアクセス先のノード識別情報として予測し、予測したノード識別情報に基づき、パケットを生成して出力する。各演算処理装置は、各入出力装置がメモリアクセスを行うメモリの物理アドレス範囲毎にノード識別情報を対応して記憶し、受信したパケットに含まれる物理アドレスに対応するノード識別情報が、自装置に対応するノード識別情報でない場合、受信したパケットを他の演算処理装置に転送する。【選択図】    図５
2016004461.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置と、前記複数の演算処理装置に接続される入出力制御装置とを有する情報処理装置において、
前記入出力制御装置は、
前記複数の演算処理装置のいずれかが過去にアクセスした入出力装置を特定する入出力装置識別情報と、前記複数の演算処理装置のうち送信元である演算処理装置を識別するノード識別情報とが対応づけられたエントリを記憶する履歴記憶部と、
メモリアクセスを行う入出力装置の入出力装置識別情報に対応するノード識別情報を、前記履歴記憶部が記憶するエントリから検索し、検索したノード識別情報を、メモリアクセス先のノード識別情報として予測する予測部と、
前記予測部が予測したノード識別情報に基づき、パケットを生成する生成部と、
前記生成部が生成したパケットを出力する送受信部を有し、
前記複数の演算処理装置の各々は、
前記送受信部が出力したパケットを受信する受信部と、
各入出力装置がメモリアクセスを行うメモリの物理アドレス範囲毎にノード識別情報を対応して記憶するテーブル記憶部と、
前記テーブル記憶部から、前記受信部が受信したパケットに含まれる物理アドレスを検索した結果であるノード識別情報を出力するデコード部と、
前記デコード部が出力したノード識別情報が、自装置に対応するノード識別情報であるかを判別するとともに、前記デコード部が出力したノード識別情報が、自装置に対応するノード識別情報でない場合、前記受信部が受信したパケットを他の演算処理装置に転送する管理部を有することを特徴とする情報処理装置。
【請求項２】
前記入出力制御装置がさらに、
前記複数の演算処理装置を接続する複数のポートと、
前記複数のポートに接続される前記複数の演算処理装置を識別するノード識別情報と前記複数のポートとの対応を記憶する接続テーブル記憶部を有し、
前記送受信部が、前記複数の演算処理装置のいずれかからのパケットを受信するとともに、前記接続テーブル記憶部を検索し、パケットを受信したポートに対応するパケットの送信元の演算処理装置を識別するノード識別情報を取得することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記送受信部が、前記複数の演算処理装置のいずれかからパケットを受信するとともに、受信したパケットに含まれる送信元の演算処理装置を識別するノード識別情報を取得することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記入出力制御装置がさらに、
前記送受信部が取得したノード識別情報を前記履歴記憶部に記憶する応答部を有することを特徴とする請求項２または請求項３記載の情報処理装置。
【請求項５】
前記入出力制御装置がさらに、
前記メモリへのメモリアクセス要求を発行した入出力装置を識別する入出力装置識別情報を含むエントリをパケット毎に記憶する要求テーブル記憶部を有し、
前記生成部が生成するパケットおよび前記複数の情報処理装置のいずれかから受信するパケットは、前記要求テーブル記憶部が記憶するエントリのうち前記メモリアクセス要求を発行した入出力装置に対応するエントリを識別するエントリ識別情報を含み、
前記応答部は、前記要求テーブル記憶部を検索し、前記複数の情報処理装置のいずれかから受信するパケットに含まれるエントリ識別情報に対応する入出力装置識別情報を取得し、前記履歴記憶部が記憶するエントリのうち、取得した入出力装置識別情報に対応するエントリに前記送受信部が取得したノード識別情報を記憶することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記履歴記憶部に記憶されるエントリは、パケットに含まれる物理アドレスを含むアドレス範囲を示すアドレス範囲情報と、前記ノード識別情報とを含み、
前記予測部は、前記入出力装置の入出力装置識別情報の代わりに、前記アドレス範囲情報に対応するノード識別情報を検索することを特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理装置。
【請求項７】
前記予測部は、前記履歴記憶部が有効なノード識別情報を記憶していない場合、所定の規則に従いノード識別情報を予測することを特徴とする請求項１ないし請求項６のいずれか１項記載の情報処理装置。
【請求項８】
複数の演算処理装置に接続される入出力制御装置において、
前記入出力制御装置は、
前記複数の演算処理装置のいずれかが過去にアクセスした入出力装置を特定する入出力装置識別情報と、前記複数の演算処理装置のうち送信元である演算処理装置を識別するノード識別情報とが対応づけられたエントリを記憶する履歴記憶部と、
メモリアクセスを行う入出力装置の入出力装置識別情報に対応するノード識別情報を、前記履歴記憶部が記憶するエントリから検索し、検索したノード識別情報を、メモリアクセス先のノード識別情報として予測する予測部と、
前記予測部が予測したノード識別情報に基づき、パケットを生成する生成部と、
前記生成部が生成したパケットを出力する送受信部を有することを特徴とする入出力制御装置。
【請求項９】
各入出力装置がメモリアクセスを行うメモリの物理アドレス範囲毎にノード識別情報を対応して記憶するテーブル記憶部をそれぞれ備える複数の演算処理装置と、前記複数の演算処理装置に接続されるとともに、前記複数の演算処理装置のいずれかが過去にアクセスした入出力装置を特定する入出力装置識別情報と前記複数の演算処理装置のうち送信元である演算処理装置を識別するノード識別情報とが対応づけられたエントリを記憶する履歴記憶部を備える入出力制御装置とを有する情報処理装置の制御方法において、
前記入出力制御装置が有する予測部が、メモリアクセスを行う入出力装置の入出力装置識別情報に対応するノード識別情報を、前記履歴記憶部が記憶するエントリから検索し、
前記予測部が、検索したノード識別情報を、メモリアクセス先のノード識別情報として予測し、
前記入出力制御装置が有する生成部が、前記予測部が予測したノード識別情報に基づき、パケットを生成し、
前記入出力制御装置が有する送受信部が、前記生成部が生成したパケットを出力し、
前記複数の演算処理装置のいずれかが有する受信部のいずれかが、前記送受信部が出力したパケットを受信し、
前記いずれかの演算処理装置が有するデコード部が、前記いずれかの演算処理装置が備えるテーブル記憶部から、前記受信部が受信したパケットに含まれる物理アドレスを検索した結果であるノード識別情報を出力し、
前記いずれかの演算処理装置が有する管理部が、前記いずれかの演算処理装置が備えるデコード部が出力したノード識別情報が、自装置に対応するノード識別情報であるかを判別するとともに、前記デコード部が出力したノード識別情報が、自装置に対応するノード識別情報でない場合、前記受信部が受信したパケットを他の演算処理装置に転送することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、入出力制御装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、複数のメモリを共通のバスを介して複数の演算処理装置に接続するＳＭＰ（Symmetric Multi-Processor）が知られている。また、それぞれ複数の演算処理装置と複数のメモリとを含む複数のノードを、インタコネクトを介して接続したＮＵＭＡ（Non-Uniform Memory Access）型システムが知られている。ＮＵＭＡ型システムでは、各メモリは、共通のアドレス空間に重複することなく割り当てられ、自ノードの演算処理装置および他ノードの演算処理装置によりアクセス可能である。例えば、各ノードは、共通のアドレス空間が分割された所定サイズの各アドレス領域に割り当てられたノードを識別する情報を格納するテーブルを有する。すなわち、各ノードは、アドレス領域とノードとの対応関係を示す情報が格納されたテーブルを有する。そして、各ノードは、テーブルを参照することで、パケットによりアクセスするメモリが自ノードと他ノードとのいずれに含まれるかを判別する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３０９７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
入出力装置を制御する入出力制御装置がインタコネクトを介してノードに接続され、入出力装置とノードとの間でデータが転送される場合、入出力制御装置は、各ノードが有するテーブルと同様のテーブルを有する。そして、入出力制御装置は、入出力装置からのアクセス要求に基づき、テーブルを参照することで、パケットを出力するノードを決定する。
【０００５】
しかしながら、新たな演算処理装置が開発され、アドレス領域とノードとの対応関係を示す情報を格納するテーブルの仕様が変更される場合、既存の入出力制御装置を使用することは困難になる。この場合、新たな仕様のテーブルと同様のテーブルを有する入出力制御装置が新たに開発されていた。
【０００６】
本件開示の情報処理装置、入出力制御装置および情報処理装置の制御方法は、新たな演算処理装置が開発された場合にも、入出力制御装置と演算処理装置との接続性を低下させることなく、パケットを送受信することを目的とする。
【課題を解決するための手段】
【０００７】
一つの観点によれば、情報処理装置は、複数の演算処理装置と、複数の演算処理装置に接続される入出力制御装置とを有し、入出力制御装置は、複数の演算処理装置のいずれかが過去にアクセスした入出力装置を特定する入出力装置識別情報と、複数の演算処理装置のうち送信元である演算処理装置を識別するノード識別情報とが対応づけられたエントリを記憶する履歴記憶部と、メモリアクセスを行う入出力装置の入出力装置識別情報に対応するノード識別情報を、履歴記憶部が記憶するエントリから検索し、検索したノード識別情報を、メモリアクセス先のノード識別情報として予測する予測部と、予測部が予測したノード識別情報に基づき、パケットを生成する生成部と、生成部が生成したパケットを出力する送受信部を有し、複数の演算処理装置の各々は、送受信部が出力したパケットを受信する受信部と、各入出力装置がメモリアクセスを行うメモリの物理アドレス範囲毎にノード識別情報を対応して記憶するテーブル記憶部と、テーブル記憶部から、受信部が受信したパケットに含まれる物理アドレスを検索した結果であるノード識別情報を出力するデコード部と、デコード部が出力したノード識別情報が、自装置に対応するノード識別情報であるかを判別するとともに、デコード部が出力したノード識別情報が、自装置に対応するノード識別情報でない場合、受信部が受信したパケットを他の演算処理装置に転送する管理部を有する。
【０００８】
別の観点によれば、複数の演算処理装置に接続される入出力制御装置は、複数の演算処理装置のいずれかが過去にアクセスした入出力装置を特定する入出力装置識別情報と、複数の演算処理装置のうち送信元である演算処理装置を識別するノード識別情報とが対応づけられたエントリを記憶する履歴記憶部と、メモリアクセスを行う入出力装置の入出力装置識別情報に対応するノード識別情報を、履歴記憶部が記憶するエントリから検索し、検索したノード識別情報を、メモリアクセス先のノード識別情報として予測する予測部と、予測部が予測したノード識別情報に基づき、パケットを生成する生成部と、生成部が生成したパケットを出力する送受信部を有する。
【０００９】
別の観点によれば、各入出力装置がメモリアクセスを行うメモリの物理アドレス範囲毎にノード識別情報を対応して記憶するテーブル記憶部をそれぞれ備える複数の演算処理装置と、複数の演算処理装置に接続されるとともに、複数の演算処理装置のいずれかが過去にアクセスした入出力装置を特定する入出力装置識別情報と複数の演算処理装置のうち送信元である演算処理装置を識別するノード識別情報とが対応づけられたエントリを記憶する履歴記憶部を備える入出力制御装置とを有する情報処理装置の制御方法は、入出力制御装置が有する予測部が、メモリアクセスを行う入出力装置の入出力装置識別情報に対応するノード識別情報を、履歴記憶部が記憶するエントリから検索し、予測部が、検索したノード識別情報を、メモリアクセス先のノード識別情報として予測し、入出力制御装置が有する生成部が、予測部が予測したノード識別情報に基づき、パケットを生成し、入出力制御装置が有する送受信部が、生成部が生成したパケットを出力し、複数の演算処理装置のいずれかが有する受信部のいずれかが、送受信部が出力したパケットを受信し、いずれかの演算処理装置が有するデコード部が、いずれかの演算処理装置が備えるテーブル記憶部から、受信部が受信したパケットに含まれる物理アドレスを検索した結果であるノード識別情報を出力し、いずれかの演算処理装置が有する管理部が、いずれかの演算処理装置が備えるデコード部が出力したノード識別情報が、自装置に対応するノード識別情報であるかを判別するとともに、デコード部が出力したノード識別情報が、自装置に対応するノード識別情報でない場合、受信部が受信したパケットを他の演算処理装置に転送する。
【発明の効果】
【００１０】
本件開示の情報処理装置、入出力制御装置および情報処理装置の制御方法は、新たな演算処理装置が開発された場合にも、入出力制御装置と演算処理装置との接続性を低下させることなく、パケットを送受信することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置、入出力制御装置および情報処理装置の制御方法の一実施形態を示す図である。
【図２】図１に示すＣＰＵの例を示す図である。
【図３】図２に示すアドレスデコーダテーブルの例を示す図である。
【図４】図２に示すアドレスデコーダテーブルの別の例を示す図である。
【図５】図１に示す入出力制御装置の例を示す図である。
【図６】図５に示すルーティングテーブルの例を示す図である。
【図７】図５に示す要求元テーブルの例を示す図である。
【図８】図５に示すアクセス履歴テーブルの例を示す図である。
【図９】図１に示すインタコネクトを介してノードと入出力制御装置との間で授受されるパケットの例を示す図である。
【図１０】図５に示す入出力制御装置がストアリクエストまたはロードリクエストのパケットをノードに送信する動作の例を示す図である。
【図１１】図２に示すノードが入出力制御装置からストアリクエストまたはロードリクエストのパケットを受信した場合の動作の例を示す図である。
【図１２】図５に示す入出力制御装置がノードから応答パケットを受信した場合の動作の例を示す図である。
【図１３】図８に示すアクセス履歴テーブルを更新する例を示す図である。
【図１４】予測部の予測が正しかった場合と、予測部の予測が間違った場合とのパケットの流れの例を示す図である。
【図１５】予測部の予測が正しかった場合と、予測部の予測が間違った場合とのアクセス時間の比較例を示す図である。
【図１６】パケットが連続して発行される場合の情報処理装置の動作の例を示す図である。
【図１７】アウトスタンディング数と、入出力制御装置とメモリとの間で転送されるデータのスループットとの関係の例を示す図である。
【図１８】情報処理装置、入出力制御装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図１９】図１８に示すアクセス履歴テーブルの例を示す図である。
【図２０】図１８に示す予測部の動作の例を示す図である。
【図２１】図１８に示す応答受信部の動作の例を示す図である。
【図２２】図１９に示すアクセス履歴テーブルを更新する例を示す図である。
【図２３】情報処理装置、入出力制御装置および情報処理装置の制御方法の別の実施形態におけるパケットの例を示す図である。
【図２４】図２３に示すパケットを送受信する入出力制御装置が、ＣＰＵから応答パケットを受けた場合の動作の例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施形態を説明する。
【００１３】
図１は、情報処理装置、入出力制御装置および情報処理装置の制御方法の一実施形態を示す。図１に示す情報処理装置ＩＰＥは、インタコネクトＩＣＮＴを介して互いに接続されたノードＮＤ（ＮＤ０、ＮＤ１）および入出力制御装置ＩＯＨを有する。ノードＮＤは、演算を処理する演算処理装置の一例である。入出力制御装置ＩＯＨは、入出力バスＩＯＢＵＳを介して複数の入出力装置ＩＯ（ＩＯ０、ＩＯ１）に接続され、入出力装置ＩＯの動作を制御する。入出力装置ＩＯは、ＨＤＤ（Hard Disk Drive）装置、ＳＳＤ（Solid State Drive）装置、通信装置またはネットワークインタフェース装置等の情報を入出力する装置である。
【００１４】
ノードＮＤ０は、ＣＰＵ（Central Processing Unit）０およびメモリバスＭＢＵＳ０を介してＣＰＵ０に接続されたメモリＭＥＭ（ＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２）を有する。ノードＮＤ１は、ＣＰＵ１およびメモリバスＭＢＵＳ１を介してＣＰＵ１に接続されたメモリＭＥＭ（ＭＥＭ１０、ＭＥＭ１１、ＭＥＭ１２）を有する。メモリＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２は、互いに独立したメモリバスＭＢＵＳ０を介してＣＰＵ０に接続され、メモリＭＥＭ１０、ＭＥＭ１１、ＭＥＭ１２は、互いに独立したメモリバスＭＢＵＳ１を介してＣＰＵ１に接続される。
【００１５】
各メモリＭＥＭは、ＣＰＵ０、ＣＰＵ１に割り当てられた共通のアドレス空間に割り当てられ、各ＣＰＵ０、ＣＰＵ１は、ノードＮＤ０、ＮＤ１のメモリＭＥＭを用いて、情報処理を分散して実行可能である。ノードＮＤが自ノードのメモリＭＥＭにアクセスする場合のアクセス速度は、他ノードのメモリＭＥＭにアクセスする場合のアクセス速度より高い。すなわち、情報処理装置ＩＰＥは、ＮＵＭＡ型システムのアーキテクチャを有する。
【００１６】
メモリＭＥＭは、ＤＩＭＭ（Dual Inline Memory Module）等のメインメモリであり、各メモリＭＥＭの記憶容量は、例えば４ＧＢ（ギガバイト）である。なお、情報処理装置ＩＰＥが有するノードＮＤの数、入出力装置ＩＯの数、各ＣＰＵに接続されるメモリＭＥＭの数は、図１に示す数に限定されない。
【００１７】
入出力制御装置ＩＯＨは、ＣＰＵからのリクエストに基づき、入出力装置ＩＯのいずれかにアクセスし、入出力装置ＩＯに対してデータを入出力する。また、入出力制御装置ＩＯＨは、入出力装置ＩＯからのメモリＭＥＭにアクセスするメモリアクセス要求に基づき、アクセスするメモリＭＥＭを接続したＣＰＵ（ＣＰＵ０またはＣＰＵ１）にリクエストを送信する。
【００１８】
図２は、図１に示すＣＰＵの例を示す。ＣＰＵ０、ＣＰＵ１は、互いに同一または同様の構成を有するため、図２では、ＣＰＵ０が説明される。ＣＰＵ０は、演算処理部１００、ルータ１１０および複数のポート１２０（１２０ａ、１２０ｂ、...）を有する。ポート１２０ａは、図１に示すインタコネクトＩＣＮＴを介して入出力制御装置ＩＯＨに接続され、ポート１２０ｂは、インタコネクトＩＣＮＴを介してＣＰＵ１に接続される。
【００１９】
演算処理部１００は、演算部１０、アドレス変換部１２、キャッシュ管理部１４、キャッシュメモリ１６、メモリアクセス部１８、ソースアドレスデコーダ２０、アドレスデコーダテーブル２２およびパケット制御部２４を有する。
【００２０】
演算部１０は、ＣＰＵ０が実行するプログラムに含まれる演算命令およびメモリアクセス命令等の命令をデコードするデコーダと、デコードした命令を実行する演算器等とを有する。アドレス変換部１２は、演算部１０から出力される論理アドレスを物理アドレスに変換し、変換した物理アドレスをキャッシュ管理部１４に出力する。アドレス変換部１２は、ＴＬＢ（Translation Lookaside Buffer）を含む。
【００２１】
キャッシュ管理部１４は、アドレス変換部１２からの物理アドレス、またはパケット制御部２４から受ける物理アドレスに基づいて、物理アドレスに対応するデータがキャッシュメモリ１６に格納されているかの判定を実行する。キャッシュ管理部１４は、データがキャッシュメモリ１６に格納されている場合（キャッシュヒット）、キャッシュメモリ１６にアクセスする。キャッシュ管理部１４は、アドレス変換部１２またはパケット制御部２４から受ける物理アドレスに対応するデータがキャッシュメモリ１６に格納されていない場合（キャッシュミス）、ソースアドレスデコーダ２０に物理アドレスを出力する。
【００２２】
ソースアドレスデコーダ２０は、キャッシュ管理部１４からのアドレスに基づきアドレスデコーダテーブル２２を参照し、物理アドレスが割り当てられたメモリＭＥＭを含むノードＮＤを求める。ソースアドレスデコーダ２０は、求めたノードＮＤを示す識別情報をキャッシュ管理部１４に出力する。ソースアドレスデコーダ２０は、アドレスデコーダテーブル２２から、リクエスト受信部３０が受信したパケットに含まれる物理アドレスＰＡを検索した結果である識別情報ＮＤＩＤを出力するデコード部の一例である。アドレスデコーダテーブル２２の例は、図３および図４に示される。
【００２３】
キャッシュ管理部１４は、キャッシュミスの場合で、ソースアドレスデコーダ２０からの識別情報が自ノードを示す場合、メモリアクセス部１８にメモリＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２のいずれかにアクセスするメモリアクセス要求を出力する。キャッシュ管理部１４は、キャッシュミスの場合で、ソースアドレスデコーダ２０からの識別情報が他ノードを示す場合、他ノードのメモリＭＥＭへのメモリアクセス要求をパケット制御部２４に出力する。キャッシュ管理部１４は、ソースアドレスデコーダ２０が出力した識別情報が、自ノードに対応する識別情報であるかを判別する管理部の一例である。また、キャッシュ管理部１４は、ソースアドレスデコーダ２０が出力した識別情報が、自ノードに対応する識別情報でない場合、リクエスト受信部３０が受信したパケットを他のノードＮＤに転送する管理部の一例である。
【００２４】
メモリアクセス部１８は、キャッシュ管理部１４からのメモリアクセス要求がライト要求の場合、キャッシュ管理部１４から受けるデータを、メモリＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２のいずれかに書き込む。メモリアクセス部１８は、キャッシュ管理部１４からのメモリアクセス要求がリード要求の場合、メモリＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２のいずれかにリードアクセスし、リードアクセスしたメモリＭＥＭから出力されるデータをキャッシュ管理部１４に出力する。
【００２５】
パケット制御部２４は、リクエスト生成部２６、応答受信部２８、リクエスト受信部３０および応答生成部３２を有する。リクエスト生成部２６は、キャッシュ管理部１４からの他ノードのメモリＭＥＭへのメモリアクセス要求に基づき、パケットを生成し、生成したパケットをルータ１１０に出力する。パケットが他ノードのメモリＭＥＭにデータを書き込むストアリクエストの場合、パケットに含まれる情報は、他ノードのメモリＭＥＭのアクセス先を示す物理アドレスと、書き込みデータとを含む。パケットが他ノードのメモリＭＥＭからデータを読み出すロードリクエストの場合、パケットに含まれる情報は、他ノードのメモリＭＥＭのアクセス先を示す物理アドレスを含む。また、リクエスト生成部２６は、キャッシュ管理部１４からの入出力装置ＩＯへのアクセス要求に基づき、パケットを生成し、生成したパケットをルータ１１０に出力する。
【００２６】
応答受信部２８は、リクエスト生成部２６が出力したパケットに応答する応答パケットを受信し、受信した情報をキャッシュ管理部１４に出力する。パケットが他ノードのメモリＭＥＭへのストアリクエストに対する応答の場合、パケットに含まれる情報は、他ノードのメモリＭＥＭへのデータの書き込みが成功したかを示す情報を含む。パケットが他ノードのメモリＭＥＭへのロードリクエストに対する応答の場合、パケットに含まれる情報は、データの読み出しが成功したかの情報と、リードデータとを含む。
【００２７】
リクエスト受信部３０は、ルータ１１０を介して供給される他のノードＮＤまたは入出力制御装置ＩＯＨからのパケットを受け、受けたパケットに含まれる情報をキャッシュ管理部１４に出力する。パケットが自ノードのメモリＭＥＭにデータを書き込むストアリクエストの場合、パケットに含まれる情報は、メモリＭＥＭのアクセス先を示す物理アドレスと、書き込みデータとを含む。パケットが自ノードのメモリＭＥＭからデータを読み出すロードリクエストの場合、パケットに含まれる情報は、メモリＭＥＭのアクセス先を示す物理アドレスを含む。リクエスト受信部３０は、入出力制御装置ＩＯＨが出力したパケットを受信する受信部の一例である。
【００２８】
応答生成部３２は、自ノードのメモリＭＥＭへのストアリクエストまたはロードリクエストのパケットに対する応答パケットを生成し、生成した応答パケットをルータ１１０に出力する。自ノードのメモリＭＥＭへのストアリクエストに対する応答パケットでは、応答パケットに含まれる情報は、自ノードのメモリＭＥＭへのデータの書き込みが成功したかを示す情報を含む。自ノードのメモリＭＥＭへのロードリクエストに対する応答パケットでは、応答パケットに含まれる情報は、データの読み出しが成功したかの情報と、リードデータとを含む。パケットの例は、図９に示される。
【００２９】
ルータ１１０は、リクエスト生成部２６または応答生成部３２から出力されるパケットを、ポート１２０ａ、１２０ｂのいずれかを介して入出力制御装置ＩＯＨまたは他のノードＮＤに出力する。また、ルータ１１０は、ポート１２０ａ、１２０ｂのいずれかを介して入出力制御装置ＩＯＨまたは他のノードＮＤから受けるパケットを、応答受信部２８またはリクエスト受信部３０に出力する。
【００３０】
なお、各ＣＰＵは、ノードＮＤおよび入出力制御装置ＩＯＨを識別する識別情報と、ノードＮＤおよび入出力制御装置ＩＯＨが接続されるポートの番号を示すポート情報とを格納する複数の領域を有するルーティングテーブルを有してもよい。この場合、ルータ１１０は、ルーティングテーブルを参照して、パケットを送信するポートを決定する。
【００３１】
図３は、図２に示すアドレスデコーダテーブル２２の例を示す。アドレスデコーダテーブル２２は、ＶＡＬＩＤフラグ、ベースアドレス、アドレス長およびノードＮＤの番号を識別する識別情報ＮＤＩＤを格納する複数の領域（図３に示すアドレスデコーダテーブル２２の各行）を有する。すなわち、アドレスデコーダテーブル２２は、ＶＡＬＩＤフラグ、ベースアドレス、アドレス長および識別情報ＮＤＩＤを含む複数のエントリを記憶する。ベースアドレスおよびアドレス長に格納された値の先頭の”０ｘ”は、格納された値が１６進数であることを示す。
【００３２】
ＶＡＬＩＤフラグは、エントリが有効な場合に”１”に設定され、エントリが無効な場合に”０”に設定される。各エントリは、ベースアドレス（物理アドレスＰＡ）を開始アドレスとし、アドレス長で示されるアドレス空間が、どのノードＮＤに割り当てられているかを示す。
【００３３】
図３に示すアドレスデコーダテーブル２２の例では、図３の右側に示すように、４ＧＢ（ギガバイト）の領域毎にノードＮＤ０とノードＮＤ１とが交互に割り当てられる例を示す。アドレスデコーダテーブル２２において、ノードＮＤ０の割り当てを示す３つのエントリには、図１に示すメモリＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２のそれぞれが割り当てられる。同様に、アドレスデコーダテーブル２２において、ノードＮＤ１の割り当てを示す３つのエントリには、図１に示すメモリＭＥＭ１０、ＭＥＭ１１、ＭＥＭ１２のそれぞれが割り当てられる。アドレスデコーダテーブル２２は、メモリＭＥＭの物理アドレスＰＡの範囲毎に識別情報ＮＤＩＤを対応して記憶するテーブル記憶部の一例である。
【００３４】
図４は、図２に示すアドレスデコーダテーブル２２の別の例を示す。図４に示すアドレスデコーダテーブル２２は、ブロック番号、ＶＡＬＩＤフラグおよび識別情報ＮＤＩＤを格納する複数の領域（図４に示すアドレスデコーダテーブル２２の各行）を有する。すなわち、アドレスデコーダテーブル２２は、ブロック番号、ＶＡＬＩＤフラグおよび識別情報ＮＤＩＤを含む複数のエントリを記憶する。図４の右側に示す情報処理装置ＩＰＥのアドレス空間の割り当ては、図３と同じである。
【００３５】
ブロック番号で識別される各ブロックは、例えば６４ＭＢ（メガバイト）のアドレス領域に対応しており、４ＧＢ（ギガバイト）のアドレス領域は、６４個のブロックで示される。なお、ブロックに対応するアドレス領域の大きさが大きいほど、エントリの数は少なくなる。
【００３６】
図５は、図１に示す入出力制御装置ＩＯＨの例を示す。入出力制御装置ＩＯＨは、入出力バスブリッジ２００、アクセス履歴テーブル２１０、予測部２２０および複数の入出力ポート２３０（２３０ａ、２３０ｂ、...）を有する。入出力ポート２３０ａ、２３０ｂは、入出力装置ＩＯ０、ＩＯ１のそれぞれに接続される。また、入出力制御装置ＩＯＨは、ルータ２４０、ルーティングテーブル２５０および複数のポート２６０（２６０ａ、２６０ｂ、...）を有する。ポート２６０ａ、２６０ｂは、図１に示すインタコネクトＩＣＮＴを介してノードＮＤ０、ＮＤ１のそれぞれに接続される。
【００３７】
入出力バスブリッジ２００は、パケット制御部４０、要求元テーブル４２および入出力バス制御部４４を有する。パケット制御部４０は、リクエスト生成部４６、応答受信部４８、リクエスト受信部５０および応答生成部５２を有する。
【００３８】
リクエスト生成部４６は、入出力ポート２３０および入出力バス制御部４４を介して入出力装置ＩＯから送信されるメモリＭＥＭへのメモリアクセス要求に基づき、パケットを生成し、生成したパケットをルータ２４０に出力する。この際、リクエスト生成部４６は、メモリアクセス要求を発行した入出力装置ＩＯの番号を予測部２２０に渡し、予測部２２０にメモリアクセス要求を出力するノードＮＤ（識別情報ＮＤＩＤ）を予測させる。リクエスト生成部４６は、予測部２２０が予測した識別情報ＮＤＩＤに基づき、パケットを生成する生成部の一例である。
【００３９】
予測部２２０は、リクエスト生成部４６から受けた入出力装置ＩＯを識別する識別情報に基づいてアクセス履歴テーブル２１０を参照し、メモリアクセス要求を出力するノードＮＤを予測する。アクセス履歴テーブル２１０の例は、図８に示される。予測部２２０は、メモリアクセスを行う入出力装置ＩＯの識別情報に対応するノードＮＤの識別情報をアクセス履歴テーブル２１０から検索し、検索したノードの識別情報をメモリアクセス先の識別情報として予測する予測部の一例である。
【００４０】
応答受信部４８は、リクエスト生成部４６が出力したパケットに対する応答パケットと、応答パケットの送信元のノードＮＤを示す識別情報とを、ルータ２４０から受信する。応答受信部４８は、要求元テーブル４２を参照し、応答パケットに対応する元のメモリアクセス要求を出力した入出力装置ＩＯを求める。そして、応答受信部４８は、求めた入出力装置ＩＯを示す識別情報とともに、応答パケットに含まれる情報を入出力バス制御部４４に出力する。また、応答受信部４８は、応答パケットの送信元のノードＮＤを示す識別情報を、応答パケットに対応する元のメモリアクセス要求を出力した入出力装置ＩＯに対応づけてアクセス履歴テーブル２１０に書き込む。応答受信部４８は、ルータ２４０が取得した識別情報ＮＤＩＤをアクセス履歴テーブル２１０に記憶する応答部の一例である。要求元テーブル４２の例は、図７に示される。
【００４１】
リクエスト受信部５０は、ルータ２４０を介して供給されるノードＮＤ０、ＮＤ１からのパケットを受け、受けたパケットに含まれる情報を入出力バス制御部４４に出力する。パケットが入出力装置ＩＯのいずれかにデータを書き込むストアリクエストの場合、パケットに含まれる情報は、データを書き込む入出力装置ＩＯを指定する情報と、書き込み要求と、書き込みデータとを含む。パケットが入出力装置ＩＯのいずれかからデータを読み出すロードリクエストの場合、パケットに含まれる情報は、データを読み出す入出力装置ＩＯを指定する情報と、読み出し要求とを含む。
【００４２】
応答生成部５２は、入出力装置ＩＯにアクセスするストアリクエストまたはロードリクエストのパケットに対する応答パケットを生成する。応答生成部５２は、生成した応答パケットを、ルータ２４０を介して、ストアリクエストまたはロードリクエストのパケットのパケットを発行したノードＮＤに出力する。パケットが入出力装置ＩＯのいずれかにデータを書き込むストアリクエストに対する応答の場合、パケットに含まれる情報は、入出力装置ＩＯへのデータの書き込みが成功したかを示す情報を含む。入出力装置ＩＯのいずれかからデータを読み出すロードリクエストに対する応答の場合、パケットに含まれる情報は、入出力装置ＩＯからのデータの読み出しが成功したかの情報と、ロードデータとを含む。
【００４３】
入出力バス制御部４４は、入出力ポート２３０を介して入出力装置ＩＯから受けるメモリアクセス要求をリクエスト生成部４６に出力する。入出力バス制御部４４は、メモリアクセス要求に対応して応答受信部４８から受ける応答パケットに含まれる情報をメモリアクセス要求の発行元の入出力装置ＩＯに出力する。入出力バス制御部４４は、リクエスト受信部５０から受ける入出力装置ＩＯへのアクセス要求を、入出力装置ＩＯのいずれかに出力する。入出力バス制御部４４は、入出力装置ＩＯへのアクセス要求に対応して入出力装置ＩＯから出力される情報を応答生成部５２に出力する。
【００４４】
ルータ２４０は、リクエスト生成部４６または応答生成部５２からパケットを受けた場合、ルーティングテーブル２５０を参照し、パケットを出力するノードＮＤに接続されたポート２６０を求め、求めたポート２６０にパケットを出力する。また、ルータ２４０は、ポート２６０のいずれかを介してノードＮＤから受信したパケットを、応答受信部４８またはリクエスト受信部５０に出力する。ルータ２４０は、ルーティングテーブル２５０を参照し、パケットを受信したポート２６０に接続されたノードＮＤを求め、求めたノードＮＤを識別する識別情報をパケットとともにパケット制御部４０に出力する。ルータ２４０は、リクエスト生成部４６が生成したパケットを出力する送受信部の一例である。ルーティングテーブル２５０の例は、図６に示される。
【００４５】
図６は、図５に示すルーティングテーブル２５０の例を示す。ルーティングテーブル２５０は、ノードＮＤを識別する識別情報ＮＤＩＤ、ＶＡＬＩＤフラグおよびノードＮＤが接続されるポートの番号を示すポート情報ＰＴＩＤを格納する複数の領域（図６に示すルーティングテーブル２５０の各行）を有する。複数の領域は、情報処理装置ＩＰＥが有するノードＮＤのそれぞれに対応して設けられる。そして、ルーティングテーブル２５０は、識別情報ＮＤＩＤ、ＶＡＬＩＤフラグおよびポート情報ＰＴＩＤを含むエントリをノードＮＤ毎に記憶する。
【００４６】
なお、入出力制御装置ＩＯＨに対応する識別情報ＮＤＩＤ＝５の領域は無効にされており（ＶＡＬＩＤフラグ＝”０”）、ポート情報ＰＴＩＤの”５”は、ダミーの値である。
【００４７】
ルーティングテーブル２５０は、複数のポート２６０に接続される複数のノードＮＤを識別する識別情報ＮＤＩＤと複数のポート２６０との対応を記憶する接続テーブル記憶部の一例である。なお、ルーティングテーブル２５０が有する領域の数は６４個に限定されない。
【００４８】
ＶＡＬＩＤフラグの”１”は、エントリが有効であることを示し、ＶＡＬＩＤフラグの”０”は、エントリが無効であることを示す。図６に示す例では、ルーティングテーブル２５０の左側に括弧づけで示すように、識別情報ＮＤＩＤの”０”から”４”は、ノードＮＤ０からノードＮＤ４のそれぞれを示す。ポート情報ＰＴＩＤの”０”から”４”は、ノードＮＤ０からノードＮＤ４のそれぞれに接続されるポート２６０を示す。
【００４９】
図５に示すルータ２４０は、パケット制御部４０からパケットを受けた場合、ルーティングテーブル２５０を参照し、パケットに含まれる送信先のノードＮＤに対応するポート情報ＰＴＩＤを求め、求めたポート情報ＰＴＩＤが示すポート２６０にパケットを送信する。また、ルータ２４０は、ポート２６０のいずれかを介してパケットを受信した場合、ルーティングテーブル２５０を参照し、パケットを受信したポート２６０を示すポート情報ＰＴＩＤに対応する識別情報ＮＤＩＤを求める。そして、ルータ２４０は、パケットの送信元のノードＮＤを示す識別情報ＮＤＩＤを、受信したパケットとともにパケット制御部４０に出力する。
【００５０】
図７は、図５に示す要求元テーブル４２の例を示す。要求元テーブル４２は、識別情報ＲＥＱＩＤに対応して、ＶＡＬＩＤフラグと、メモリアクセス要求の発行元の入出力装置ＩＯを識別する識別情報ＩＯＩＤとを格納する複数の領域（図７に示す要求元テーブル４２の各行）を有する。すなわち、要求元テーブル４２は、ＶＡＬＩＤフラグと識別情報ＩＯＩＤとを含むエントリを記憶する領域を、識別情報ＲＥＱＩＤ毎に有する。
【００５１】
ＶＡＬＩＤフラグの”１”は、エントリが有効状態であることを示し、ＶＡＬＩＤフラグの”０”は、エントリが無効状態であることを示す。要求元テーブル４２は、メモリＭＥＭへのメモリアクセス要求を発行した入出力装置ＩＯを識別する識別情報ＩＯＩＤを含むエントリをパケット毎に記憶する要求テーブル記憶部の一例である。
【００５２】
図５に示すリクエスト生成部４６は、入出力装置ＩＯからのメモリアクセス要求に基づくパケットをノードＮＤに送信するときに、要求元テーブル４２の無効状態のエントリに識別情報ＩＯＩＤを記憶し、ＶＡＬＩＤフラグを”１”に設定する。また、図５に示す応答受信部４８は、応答パケットを受信したときに、要求元テーブル４２を参照し、応答パケットに含まれる識別情報ＲＥＱＩＤに対応するエントリに含まれる識別情報ＩＯＩＤを求める。そして、応答受信部４８は、求めた識別情報ＩＯＩＤを応答パケットに含まれる情報とともに、入出力バス制御部４４に通知する。ここで、応答受信部４８が要求元テーブル４２を参照して求める識別情報ＩＯＩＤは、応答パケットに対応する元のメモリアクセス要求を出力した入出力装置ＩＯを示す。
【００５３】
図８は、図５に示すアクセス履歴テーブル２１０の例を示す。アクセス履歴テーブル２１０は、情報処理装置ＩＰＥが有する入出力装置ＩＯのそれぞれに対応する複数の領域（図８に示すアクセス履歴テーブル２１０の各行）を有する。各領域には、入出力装置ＩＯを識別する識別情報ＩＯＩＤと、ＶＡＬＩＤフラグと、メモリアクセス要求の送信先と予測されるノードＮＤを示す識別情報ＮＤＩＤとが格納される。すなわち、アクセス履歴テーブル２１０は、識別情報ＩＯＩＤ、ＶＡＬＩＤフラグおよび識別情報ＮＤＩＤを含む複数のエントリを記憶する。アクセス履歴テーブル２１０に記憶されるエントリの数は、入出力制御装置ＩＯＨに接続可能な入出力装置ＩＯの数（すなわち、図５の入出力ポート２３０の数）に等しい。
【００５４】
ＶＡＬＩＤフラグの”１”は、エントリが含む識別情報ＮＤＩＤが有効（すなわち、メモリアクセス要求の送信先の予測に使用可能）であることを示し、ＶＡＬＩＤフラグの”０”は、エントリが含む識別情報が無効であることを示す。アクセス履歴テーブル２１０は、図５に示す予測部２２０により参照され、図５に示す応答受信部４８により更新される。アクセス履歴テーブル２１０を更新する例は、図１３に示す。
【００５５】
アクセス履歴テーブル２１０は、ノードＮＤのいずれかが過去にアクセスした入出力装置ＩＯを特定する識別情報ＩＯＩＤと応答パケットの送信元であるノードＮＤを識別する識別情報ＮＤＩＤとが対応づけられたエントリを記憶する履歴記憶部の一例である。
【００５６】
図８に示すアクセス履歴テーブル２１０は、図３に示すアドレスデコーダテーブル２２に比べて規模が小さい。また、ソースアドレスデコーダ２０と予測部２２０とは、互いに同程度の規模である。このため、予測部２２０およびアクセス履歴テーブル２１０が搭載された入出力制御装置ＩＯＨの回路規模を、ソースアドレスデコーダ２０およびアドレスデコーダテーブル２２が搭載された入出力制御装置ＩＯＨの回路規模に比べて小さくすることができる。
【００５７】
図９は、図１に示すインタコネクトＩＣＮＴを介してノードＮＤと入出力制御装置ＩＯＨとの間で授受されるパケットの例を示す。なお、パケットに含まれる各要素のビット数およびバイト数（図９にかぎ括弧で示す）は、図９に示す値に限定されない。図９は、パケットの例として、データを書き込むストアリクエストと、ストアリクエストに対する応答パケットであるストア応答と、データを読み出すロードリクエストと、ロードリクエストに対する応答パケットであるロード応答とを示す。
【００５８】
各パケットにおいて、オペレーションコードＯＰＣＤは、パケットの種類（ストアリクエスト、ストアリクエストに対するストア応答、ロードリクエスト、ロードリクエストに対するロード応答のいずれか）を示す。ディスティネーションＤＳＴは、パケットの送信先の識別情報（ＮＤＩＤまたはＩＯＩＤ）を示し、ソースＳＲＣは、パケットの送信元の識別情報（ＩＯＩＤまたはＮＤＩＤ）を示す。識別情報ＲＥＱＩＤは、入出力制御装置ＩＯＨからのリクエストの送信時に、要求元テーブル４２に割り当てられた識別情報ＲＥＱＩＤを示す。識別情報ＲＥＱＩＤは、メモリＭＥＭへのメモリアクセス要求を発行した入出力装置ＩＯを識別するために使用される。物理アドレスＰＡは、メモリＭＥＭにアクセスするリクエストではアクセス対象のアドレスを示し、入出力制御装置ＩＯＨにアクセスするリクエストでは入出力制御装置ＩＯＨに割り当てられたアドレスを示す。
【００５９】
ストアリクエストのパケットは、アクセス対象のメモリＭＥＭまたは入出力制御装置ＩＯＨに書き込むデータＤＡＴＡを含み、ロード応答のパケットは、アクセス対象のメモリＭＥＭまたは入出力制御装置ＩＯＨから読み出したデータＤＡＴＡを含む。ストア応答およびロード応答のパケットは、元のパケットによるアクセス動作の結果を示す結果コードＲＥＳＵＬＴを含む。各パケット内の”（ＲＳＶ）”は、使用されないことを示す。
【００６０】
図１０から図１２は、図１に示す入出力装置ＩＯがメモリＭＥＭにアクセスする動作の例を示す。図１０から図１２は、情報処理装置ＩＰＥの制御方法の例を示す。図１０から図１２は、入出力制御装置ＩＯＨが、メモリＭＥＭにデータを書き込むメモリアクセス要求を入出力装置ＩＯから受信し、メモリＭＥＭにデータを書き込む動作を示す。あるいは、図１０から図１２は、入出力制御装置ＩＯＨが、メモリＭＥＭに対するメモリアクセス要求を入出力装置ＩＯから受信してから、メモリＭＥＭから読み出されたデータを入出力装置ＩＯに送信する動作を示す。
【００６１】
図１０は、図５に示す入出力制御装置ＩＯＨが、ノードＮＤにストアリクエストまたはロードリクエストのパケットを送信する動作の例を示す。
【００６２】
まず、ステップＳ２０２において、入出力バス制御部４４は、メモリＭＥＭへのメモリアセス要求を入出力装置ＩＯから受信した場合、ステップＳ２０４の処理を実行する。
【００６３】
ステップＳ２０４において、入出力バス制御部４４は、メモリアクセス要求に含まれる物理アドレスＰＡと、メモリアクセス要求を発行した入出力装置ＩＯを識別する識別情報ＩＯＩＤとをパケット制御部２４に通知する。
【００６４】
次に、ステップＳ２０６において、パケット制御部２４は、要求元テーブル４２内の無効のエントリの１つに、パケット制御部２４から受けた識別情報ＩＯＩＤを格納し、ＶＡＬＩＤフラグを”１”に設定する。また、パケット制御部２４は、入出力バス制御部４４から受けた識別情報ＩＯＩＤを予測部２２０に通知する。
【００６５】
次に、ステップＳ２０８において、予測部２２０は、アクセス履歴テーブル２１０を参照し、パケット制御部２４から受けた識別情報ＩＯＩＤに対応するエントリが有効な識別情報ＮＤＩＤを含むかを判定する。予測部２２０は、識別情報ＩＯＩＤに対応するエントリが有効な識別情報ＮＤＩＤを含むかを、ＶＡＬＩＤフラグを用いて判定する。
【００６６】
予測部２２０は、識別情報ＩＯＩＤに対応するエントリが有効な識別情報ＮＤＩＤを含む場合、ステップＳ２１０において、識別情報ＮＤＩＤをパケット制御部２４に通知する。
【００６７】
予測部２２０は、識別情報ＩＯＩＤに対応するエントリが有効な識別情報ＮＤＩＤを含まない場合、ステップＳ２１２において、インタコネクトＩＣＮＴに接続されたノードＮＤを識別する識別情報ＮＤＩＤの１つを、ランダムに予測する。そして、予測部２２０は、ランダムに予測した識別情報ＮＤＩＤをパケット制御部２４に通知する。なお、予測部２２０は、アクセス履歴テーブル２１０が有効な識別情報ＮＤＩＤを記憶していない場合、ランダム以外の所定の規則に従い識別情報ＮＤＩＤを予測してもよい。ランダム以外の所定の規則は、昇順、降順等である。
【００６８】
このように、有効な識別情報ＮＤＩＤがアクセス履歴テーブル２１０に格納されていない場合、予測部２２０は、識別情報ＮＤＩＤを所定の規則に従い選択する。これにより、アクセス履歴テーブル２１０に有効な識別情報ＮＤＩＤが格納されていない場合にも、リクエスト生成部４６は、入出力装置ＩＯからのメモリアクセス要求に基づいて、パケットを生成し、生成したパケットをノードＮＤのいずれかに送信することができる。換言すれば、アクセス履歴テーブル２１０に有効な識別情報ＮＤＩＤが格納されていない場合に、リクエスト生成部４６が誤動作することを抑止することができる。なお、パケットの送信先のノードＮＤが間違った場合、図１１で説明するように、正しいノードＮＤにパケットが転送されるため、パケットがエラーになることを抑止することができる。
【００６９】
次に、ステップＳ２１４において、パケット制御部４０は、入出力バス制御部４４から受けたメモリアクセス要求に基づいて、予測部２２０から受けた識別情報ＮＤＩＤを送信先（ディスティネーションＤＳＴ）とするパケットを生成する。パケットのソースＳＲＣは、メモリアクセス要求を発行した入出力装置ＩＯの識別情報ＩＯＩＤに設定される。生成されたパケットは、要求元テーブル４２における識別情報ＩＯＩＤを格納した領域に割り当てられた識別情報ＲＥＱＩＤを含む。
【００７０】
このように、入出力制御装置ＩＯＨは、ソースアドレスデコーダ２０およびアドレスデコーダテーブル２２を持つことなく、予測部２２０の予測結果に基づきパケットを送信するノードＮＤを決定することができる。この結果、新たなＣＰＵが開発された場合にも、新たなＣＰＵに搭載されるソースアドレスデコーダおよびアドレスデコーダテーブルを入出力制御装置ＩＯＨに移植することなく、既存の入出力制御装置ＩＯＨを使用することができる。これにより、入出力制御装置ＩＯＨとの接続性が保証された既存の入出力装置ＩＯを情報処理装置ＩＰＥに接続することができる。すなわち、ＣＰＵの世代に依存することなく、入出力制御装置ＩＯＨとノードＮＤとを接続することができ、新たなＣＰＵが開発された場合にも、入出力制御装置ＩＯＨとノードＮＤとの接続性を低下させることなく、パケットを送受信することができる。
【００７１】
次に、ステップＳ２１６において、パケット制御部２４は、生成したパケットをルータ２４０に送信する。ルータ２４０は、ルーティングテーブル２５０を参照し、パケットのソースＳＲＣに設定された識別情報ＮＤＩＤが示すノードＮＤが接続されたポート２６０にパケットを出力する。
【００７２】
図１１は、図２に示すノードＮＤが入出力制御装置ＩＯＨからストアリクエストまたはロードリクエストのパケットを受信した場合の動作の例を示す。
【００７３】
まず、ステップＳ１０２において、ＣＰＵは、パケット制御部２４が、メモリＭＥＭへのメモリアセス要求を示すパケットを受信した場合、ステップＳ１０４の処理を実行する。なお、ステップＳ１０２は、パケット制御部２４が、入出力制御装置ＩＯＨまたは他のノードＮＤからのメモリアセス要求を示すパケットを受信した場合に実行される。
【００７４】
ステップＳ１０４において、キャッシュ管理部１４は、パケット制御部２４から受けたパケットに含まれる物理アドレスＰＡをソースアドレスデコーダ２０に渡す。ソースアドレスデコーダ２０は、アドレスデコーダテーブル２２を参照し、物理アドレスＰＡが割り当てられたノードＮＤを示す識別情報ＮＤＩＤを求める。なお、ソースアドレスデコーダ２０が参照するアドレスデコーダテーブル２２は、図３または図４のいずれでもよい。
【００７５】
そして、キャッシュ管理部１４は、ソースアドレスデコーダ２０が求めた識別情報ＮＤＩＤが、自ノードを示すかを判定する。物理アドレスＰＡが自ノードを示す場合、ステップＳ１０６が実行される。識別情報ＮＤＩＤが他ノードを示す場合、パケットを他ノードに転送するためにステップＳ１２０が実行される。
【００７６】
ステップＳ１０６において、キャッシュ管理部１４は、パケットがストアリクエストの場合、物理アドレスＰＡが示すキャッシュメモリ１６の領域または物理アドレスＰＡが示すメモリＭＥＭにアクセスし、データを書き込む。一方、キャッシュ管理部１４は、パケットがロードリクエストの場合、物理アドレスＰＡが示すキャッシュメモリ１６の領域または物理アドレスＰＡが示すメモリＭＥＭにアクセスし、データを読み出す。次に、ステップＳ１０８において、キャッシュ管理部１４は、キャッシュメモリ１６のコヒーレンスを維持する等の管理処理を実行する。また、キャッシュ管理部１４は、メモリアクセスの完了通知をパケット制御部２４に出力し、パケットがロードリクエストの場合、キャッシュメモリ１６またはメモリＭＥＭから読み出したデータをパケット制御部２４に出力する。
【００７７】
次に、ステップＳ１１０において、パケット制御部２４の応答生成部３２は、メモリアクセスに対する応答パケットを生成し、生成したパケットを入出力制御装置ＩＯＨに送信し、動作を終了する。
【００７８】
一方、ステップＳ１２０において、キャッシュ管理部１４は、ステップＳ１０４で求めた識別情報ＮＤＩＤをパケットの転送先としてパケット制御部２４に通知する。次に、ステップＳ１２２において、パケット制御部２４のリクエスト生成部２６は、パケットのディスティネーションＤＳＴに格納された識別情報ＮＤＩＤをキャッシュ管理部１４から受けた識別情報ＮＤＩＤで書き替える。次に、ステップＳ１２４において、リクエスト生成部２６は、ディスティネーションＤＳＴを書き替えたパケットをルータ１１０に送信する。ルータ１１０は、受信したパケットに基づいて、パケットを他のノードＮＤに転送する。そして、パケットの受信動作が完了する。転送されたパケットを受信した他のノードＮＤのＣＰＵは、ステップＳ１０２、Ｓ１０４、Ｓ１０６、Ｓ１０８、Ｓ１１０の処理を実行する。
【００７９】
なお、キャッシュ管理部１４が、パケットの転送機能を有していない場合、ステップＳ１２０、Ｓ１２２、Ｓ１２４の代わりに、エラー処理が実行される。エラー処理では、キャッシュ管理部１４は、”ＰＡ異常”を示す結果コードＲＥＳＵＬＴを含む応答パケットを入出力制御装置ＩＯＨに送信する指示を応答生成部３２に出力する。入出力制御装置ＩＯＨは、”ＰＡ異常”を示す結果コードＲＥＳＵＬＴを含む応答パケットを受信した場合、図１０に示すステップＳ２０２、Ｓ２０４、Ｓ２０８、Ｓ２１２、Ｓ２１４、Ｓ２１６の処理を実行し、パケットを他のノードＮＤに再送信する。このため、入出力制御装置ＩＯＨは、エラー処理とパケットの再送信を何回か繰り返すことで、正しいノードＮＤにパケットを送信することができる。入出力装置ＩＯからメモリＭＥＭへのメモリアクセス要求（パケット）が所定の回数連続して発行される場合、以降のパケットは、正しいノードＮＤに送信される。このように、予測部２２０が予測したパケットの送信先のノードＮＤが間違っており、ＣＰＵがパケットの転送機能を有していない場合にも、情報処理装置ＩＰＥは、メモリアクセス要求に基づくパケットを処理することができる。
【００８０】
図１２は、図５に示す入出力制御装置ＩＯＨがノードＮＤから応答パケットを受信した場合の動作の例を示す。応答パケットは、図９に示すストア応答またはロード応答である。
【００８１】
まず、ステップＳ２２０において、図５に示した入出力制御装置ＩＯＨは、ルータ２４０を介してＣＰＵから応答パケットを受信した場合、ステップＳ２２２の処理を実行する。
【００８２】
ステップＳ２２２において、ルータ２４０は、ルーティングテーブル２５０を参照し、応答パケットを受けたポート２６０に接続されたノードＮＤを示す識別情報ＮＤＩＤを取得し、取得した識別情報ＮＤＩＤを応答パケットとともにパケット制御部４０に出力する。すなわち、ルータ２４０は、複数のノードＮＤのいずれかから応答パケットを受信した場合、ルーティングテーブル２５０を検索し、応答パケットの送信元のノードＮＤを示すノード識別情報ＮＤＩＤを取得する。
【００８３】
このように、ルータ２４０は、既存のルーティングテーブル２５０を参照して応答パケットの送信元のノードＮＤを求めることで、ステップＳ２３０でアクセス履歴テーブル２１０に格納する識別情報ＮＤＩＤを取得することができる。すなわち、新たな回路を設けることなく、応答パケットの送信元のノードＮＤを示す識別情報ＮＤＩＤを取得することができる。
【００８４】
次に、ステップＳ２２４において、パケット制御部４０の応答受信部４８は、応答パケットに含まれる結果コードＲＥＳＵＬＴ（図９）を参照し、元のパケットの処理が正常であったかを判断する。結果コードＲＥＳＵＬＴが正常応答を示す場合、ステップＳ２２６の処理が実行され、結果コードＲＥＳＵＬＴが識別情報ＮＤＩＤの異常または物理アドレスＰＡの異常を示す場合、ステップＳ２４０の処理が実行される。
【００８５】
ステップＳ２２６において、応答受信部４８は、要求元テーブル４２（図７）を参照し、応答パケットに含まれる識別情報ＲＥＱＩＤに対応する領域に格納されたメモリアクセス要求の発行元の識別情報ＩＯＩＤを取得する。すなわち、応答受信部４８は、要求元テーブル４２を検索し、複数のノードＮＤのいずれかから受信するパケットに含まれる識別情報ＲＥＱＩＤに対応する入出力装置ＩＯの識別情報ＩＯＩＤを取得する。
【００８６】
次に、ステップＳ２２８において、応答受信部４８は、要求元テーブル４２において、識別情報ＩＯＩＤを取得した領域のＶＡＬＩＤフラグを”０”に設定し、当該領域に対応する識別情報ＲＥＱＩＤを未使用状態に戻す。すなわち、要求元テーブル４２を更新する。
【００８７】
次に、ステップＳ２３０において、応答受信部４８は、ステップＳ２２６で取得した識別情報ＩＯＩＤに対応するアクセス履歴テーブル２１０のエントリに、ステップＳ２２２で取得した応答パケットの送信元の識別情報ＮＤＩＤを格納する。応答パケットの送信元のノードＮＤは、応答パケットに対応する元のパケット（メモリアクセス要求）を処理したノードＮＤである。すなわち、応答受信部４８は、応答パケットに対応する元のパケットでアクセスされたメモリＭＥＭを含むノードＮＤを示す識別情報ＮＤＩＤを、アクセス履歴テーブル２１０に格納する。
【００８８】
このように、応答受信部４８は、要求元テーブル４２から特定したメモリアクセス要求の発行元の識別情報ＩＯＩＤを利用して、アクセス履歴テーブル２１０の識別情報ＮＤＩＤを更新することができる。すなわち、新たな回路を設けることなく、既存の要求元テーブル４２を利用して、アクセス履歴テーブル２１０における識別情報ＮＤＩＤを格納するエントリを選択することができる。
【００８９】
図１１のステップＳ１０４において、パケット内の物理アドレスＰＡが他ノードであることが判定された場合、パケット内のディスティネーションＤＳＴが示す識別情報ＮＤＩＤは正しくない。換言すれば、パケットの生成時に予測部２２０がアクセス履歴テーブル２１０を用いて取得した識別情報ＮＤＩＤ、あるいは、ランダムに生成した識別情報ＮＤＩＤは正しくない。一方、応答受信部４８は、応答パケットの受信毎にアクセス履歴テーブル２１０に識別情報ＮＤＩＤを格納する。これにより、入出力装置ＩＯからメモリＭＥＭへのメモリアクセス要求（パケット）が所定の回数連続して発行される場合、予測部２２０が予測する識別情報ＮＤＩＤが正しい確率は高くなる。
【００９０】
次に、ステップＳ２３２において、応答受信部４８は、応答パケットに対する正常処理を実行する。応答パケットの元のパケットがストアリクエストの場合、応答受信部４８は、元のパケットに対応するメモリアクセス要求の発行元の入出力装置ＩＯにデータの書き込みの完了を通知する。応答パケットの元のパケットがロードリクエストの場合、応答受信部４８は、元のパケットに対応するメモリアクセス要求の発行元の入出力装置ＩＯにメモリＭＥＭから読み出したデータを転送する。そして、入出力制御装置ＩＯＨによる応答パケットの受信処理が終了する。なお、メモリアクセス要求の発行元の入出力装置ＩＯは、ステップＳ２２６において要求元テーブル４２から取得した識別情報ＩＯＩＤで示される。
【００９１】
一方、結果コードＲＥＳＵＬＴが識別情報ＮＤＩＤの異常または物理アドレスＰＡの異常を示す場合、ステップＳ２４０において、応答受信部４８はエラー処理を実行する。応答受信部４８は、メモリＭＥＭへのメモリアクセスの失敗を示す情報を、メモリアクセス要求の発行元の入出力装置ＩＯに通知する。そして、入出力制御装置ＩＯＨによる応答パケットの受信処理が終了する。
【００９２】
ステップＳ２３０の処理によりアクセス履歴テーブル２１０に格納された正しい識別情報ＮＤＩＤは、次のメモリアクセス要求が入出力装置ＩＯから発行された場合に、図１０のステップＳ２１０の処理で使用される。図９に示すパケットでは、１回のストアリクエストにより１２８バイトのデータがメモリＭＥＭに書き込まれ、１回のロードリクエストにより１２８バイトのデータがメモリＭＥＭから読み出される。例えば、入出力装置ＩＯによるメモリＭＥＭへのメモリアクセスが、ページ単位で実行され、１ページは８ＫＢ（キロバイト）とする。この場合、入出力装置ＩＯからメモリＭＥＭへのデータの書き込みは、６４回のストアリクエストにより実行され、メモリＭＥＭから入出力装置ＩＯへのデータの読み出しは、６４回のロードリクエストにより実行される。
【００９３】
メモリＭＥＭの１ページをアクセスする６４回のメモリアクセス要求において、予測部２２０が最初のメモリアクセス要求に基づき予測した識別情報ＮＤＩＤが正しくないとする（予測部２２０が図１０のステップＳ２１２を実行）。この場合にも、最初のメモリアクセス要求に対する応答パケットの受信に基づき、メモリアクセス先を示す識別情報ＮＤＩＤはアクセス履歴テーブル２１０に正しく設定され、２回目以降のメモリアクセス要求に対応するパケットは、正しいノードＮＤに送信される。
【００９４】
図１３は、図８に示すアクセス履歴テーブル２１０を更新する例を示す。なお、図１３では、入出力装置ＩＯ０、ＩＯ１に対応するエントリを示す。図１３は、情報処理装置ＩＰＥの制御方法の例を示す。アクセス履歴テーブル２１０の全てのエントリは、情報処理装置ＩＰＥに電源が投入された後の初期化処理により、初期状態にリセットされる（図１３（ａ））。初期状態では、識別情報ＩＯＩＤの領域は、入出力装置ＩＯのそれぞれに割り当てられた番号が”０”から順に格納され、全てのＶＡＬＩＤフラグの領域および全ての識別情報ＮＤＩＤの領域は、”０”にリセットされる。
【００９５】
この後、入出力制御装置ＩＯＨは、”１”の識別情報ＩＯＩＤが割り当てられた入出力装置ＩＯ１からメモリアクセス要求を受信する。アクセス履歴テーブル２１０における識別情報ＩＯＩＤ＝”１”を含むエントリは、ＶＡＬＩＤフラグが”０”であり無効状態である。このため、入出力制御装置ＩＯＨは、図１０のステップＳ２１２で説明したように、予測部２２０が予測したランダムな識別情報ＮＤＩＤを用いてパケット（ストアリクエストまたはロードリクエスト）を生成する。
【００９６】
入出力制御装置ＩＯＨの応答受信部４８は、入出力装置ＩＯ１が発行したメモリアクセス要求のパケットに対する応答パケット（ストア応答またはロード応答）を、識別情報ＮＤＩＤ＝”１”が割り当てられたノードＮＤ１から受信する（図１３（ｂ））。そして、応答受信部４８は、図１２のステップＳ２３０で説明したように、アクセス履歴テーブル２１０における識別情報ＩＯＩＤ＝”１”を含むエントリのＶＡＬＩＤフラグおよび識別情報ＮＤＩＤの領域を”１”にセットする（図１３（ｃ））。
【００９７】
次に、入出力制御装置ＩＯＨは、”１”の識別情報ＩＯＩＤが割り当てられた入出力装置ＩＯ１からメモリアクセス要求を受信する。入出力制御装置ＩＯＨは、図１０のステップＳ２１０で説明したように、予測部２２０がアクセス履歴テーブル２１０を参照することで予測した識別情報ＮＤＩＤ（＝”１”）を用いてパケットを生成する。
【００９８】
この後、応答受信部４８は、識別情報ＮＤＩＤ＝”１”が割り当てられたノードＮＤ１から応答パケット受信する（図１３（ｄ））。そして、応答受信部４８は、図１２のステップＳ２３０で説明したように、アクセス履歴テーブル２１０における識別情報ＩＯＩＤ＝”１”を含むエントリのＶＡＬＩＤフラグおよび識別情報ＮＤＩＤの領域を”１”にセットする（図１３（ｅ））。なお、１つの入出力装置ＩＯから１つのメモリＭＥＭに対する複数のメモリアクセス要求が連続して発行される場合、応答パケットに基づき更新されるアクセス履歴テーブル２１０の内容は、更新前の状態と同じである。アクセス履歴テーブル２１０の内容が、更新の前後で変化しない場合、応答受信部４８は、アクセス履歴テーブル２１０のＶＡＬＩＤフラグおよび識別情報ＮＤＩＤの領域の書き替え処理を省略してもよい。
【００９９】
次に、入出力制御装置ＩＯＨは、”０”の識別情報ＩＯＩＤが割り当てられた入出力装置ＩＯ０からメモリアクセス要求を受信する。アクセス履歴テーブル２１０における識別情報ＩＯＩＤ＝”０”を含むエントリは、ＶＡＬＩＤフラグが”０”であり無効状態である。このため、入出力制御装置ＩＯＨは、図１０のステップＳ２１２で説明したように、予測部２２０が生成したランダムな識別情報ＮＤＩＤを用いてパケットを生成する。
【０１００】
この後、応答受信部４８は、識別情報ＮＤＩＤ＝”０”が割り当てられたノードＮＤ０から応答パケット受信する（図１３（ｆ））。そして、応答受信部４８は、図１２のステップＳ２３０で説明したように、アクセス履歴テーブル２１０における識別情報ＩＯＩＤ＝”０”を含むエントリのＶＡＬＩＤフラグおよび識別情報ＮＤＩＤの領域を”１”にセットする（図１３（ｇ））。
【０１０１】
図１４は、予測部２２０の予測が正しかった場合と、予測部２２０の予測が間違った場合とのパケットの流れの例を示す。図１４は、情報処理装置ＩＰＥの制御方法の例を示す。図１４に示す例では、入出力装置ＩＯは、ＣＰＵ１に接続されたメモリＭＥＭ１０に割り当てられた記憶領域を示す物理アドレスＰＡとともにメモリアクセス要求を入出力制御装置ＩＯＨに送信する。そして、メモリアクセス要求に基づき入出力制御装置ＩＯＨが発行するパケットによりメモリＭＥＭ１０がアクセスされる。
【０１０２】
予測部２２０の予測が正しかった場合、入出力制御装置ＩＯＨは、アクセスするメモリＭＥＭ１０を含むノードＮＤ１にパケットを送信する（図１４（ａ））。ノードＮＤ１のＣＰＵ１は、受信したパケットに基づいてメモリＭＥＭ１０にアクセスする（図１４（ｂ））。そして、ＣＰＵ１は、応答パケットを入出力制御装置ＩＯＨに送信する（図１４（ｃ））。
【０１０３】
一方、予測部２２０の予測が間違った場合、入出力制御装置ＩＯＨは、アクセスするメモリＭＥＭ１０を含まないノードＮＤ０にパケットを送信する（図１４（ｄ））。ノードＮＤ０のＣＰＵ０は、図５に示すアクセス履歴テーブル２１０を参照することで、パケットに含まれる物理アドレスＰＡが、ノードＮＤ１に割り当てられていることを検出し、パケットをノードＮＤ１に転送する（図１４（ｅ））。転送されたパケットを受信したノードＮＤ１のＣＰＵ１は、パケットに基づいてメモリＭＥＭ１０にアクセスする（図１４（ｆ））。そして、ＣＰＵ１は、応答パケットを入出力制御装置ＩＯＨに送信する（図１４（ｇ））。
【０１０４】
図１５は、予測部２２０の予測が正しかった場合と、予測部２２０の予測が間違った場合とのアクセス時間の比較例を示す。図１５に示す例では、入出力装置ＩＯは、ノードＮＤ１に含まれるメモリＭＥＭ１０に割り当てられた記憶領域を示す物理アドレスＰＡとともにメモリアクセス要求を入出力制御装置ＩＯＨに送信する。
【０１０５】
予測部２２０の予測が正しかった場合、予測部２２０が予測した識別情報ＮＤＩＤがノードＮＤ１を示す場合、入出力制御装置ＩＯＨは、ＣＰＵ０を介することなく、ＣＰＵ１にパケットを送信する。この場合、ＣＰＵ０へのパケットの転送は発生しない。
【０１０６】
一方、予測部２２０の予測が間違った場合、予測部２２０が求めた識別情報ＮＤＩＤがノードＮＤ１でなくノードＮＤ０を示す場合、ＣＰＵ０からＣＰＵ１へのパケットの転送が発生する。この場合、パケットの転送に掛かる時間は、ＣＰＵ０がＣＰＵ１に転送するパケットの送信処理時間と、パケットの転送時間と、ＣＰＵ１が受信したパケットの受信処理時間とを含む。この結果、予測部２２０の予測が間違った場合、パケットの転送に係る時間に相当するアクセスペナルティが発生する。
【０１０７】
図１６は、パケットが連続して発行される場合の情報処理装置ＩＰＥの動作の例を示す。図１５の同様の動作については、詳細な説明は省略する。図１５と同様に、太い破線の矢印は、予測部２２０の予測が間違った場合の動作を示し、太い実線の矢印は、予測部２２０の予測が正しかった場合の動作を示す。
【０１０８】
図１６では、先行するリクエストに対する応答を受信する前に送信可能なリクエストの数であるアウトスタンディング数は”３”である。また、アウトスタンディング数分のパケットでは、予測部２２０は、識別情報ＮＤＩＤを間違って予測し、アウトスタンディング数以降のパケットでは、予測部２２０は、識別情報ＮＤＩＤを正しく予測するとする。
【０１０９】
入出力制御装置ＩＯＨは、アウトスタンディング数を超えた数の応答待ちのリクエストを保持しないため、４番目以降のパケットを、先行するパケットに対する応答パケットを受信した後にＣＰＵ０またはＣＰＵ１に送信する。
【０１１０】
図１７は、アウトスタンディング数と、入出力制御装置ＩＯＨとメモリＭＥＭとの間で転送されるデータのスループットとの関係の例を示す。図１７の太い実線は、アウトスタンディング数分のリクエストで識別情報ＮＤＩＤの予測が間違われ、アウトスタンディング数以降のリクエストで識別情報ＮＤＩＤの予測が正しい場合のスループットの変化を示す。図１６に示す動作でのスループットは、図１７に示す実線において、アウトスタンディング数が”３”の特性で示される（約２ＧＢ／ｓ）。一方、図１７の一点鎖線は、全てのリクエストで識別情報ＮＤＩＤの予測が正しい場合のスループットの変化を示す。
【０１１１】
図１７に示す特性は、以下のパラメータを使用して求められた。
インタコネクトＩＣＮＴの通信バンド幅      ：３６ＧＢ／ｓ
データの総転送量                          ：８ＫＢ
１パケットで送信するデータサイズ          ：１２８Ｂ
パケットの送信処理による遅延時間          ：２１ｎｓ
パケットの受信処理による遅延時間          ：１９ｎｓ
パケットの転送による遅延時間       ：１０ｎｓ
メモリＭＥＭのアクセスレイテンシ          ：１００ｎｓ
データの総転送量と１パケットで送信するデータサイズとの関係から、８ＫＢのデータを転送するために６４個のパケットが発行される。スループット（ＧＢ／ｓ）は、データの転送量を転送時間で除して求められる。予測部２２０による予測の間違いは、図１５に示すように、転送時間の増加（アクセスペナルティ）として現れる。予測部２２０による予測が間違った場合、ノードＮＤ間でのパケットの転送が発生し、パケットの送信処理による遅延時間と、パケットの転送による遅延時間と、パケットの受信処理による遅延時間が余分に掛かる（５０ｎｓ）。
【０１１２】
アウトスタンディング数は、応答パケットを受ける前に送信できるパケットの数であるため、アウトスタンディング数が増える程、パケットの送信効率は向上し、スループットは上昇する。図１７に示す例では、予測部２２０による予測が間違った場合と、全ての予測が正しい場合とのスループットの差は、アウトスタンディング数が４４の場合に最大になる。アウトスタンディング数が４５を超えると、スループットの差は小さくなり、予測が間違った場合のスループットへの影響は小さくなる。なお、情報処理装置ＩＰＥが実際に適用するアウトスタンディング数は、最大でも１０程度であり、予測のミスによるスループットへの影響は、アウトスタンディング数が１０を超える場合に比べて小さい。
【０１１３】
以上、図１から図１７に示した実施形態では、入出力制御装置ＩＯＨは、ソースアドレスデコーダ２０およびアドレスデコーダテーブル２２を持つことなく、予測部２２０の予測結果に基づきパケットを送信するノードＮＤを決定することができる。この結果、ＣＰＵの世代に依存することなく、入出力制御装置ＩＯＨとノードＮＤとを接続することができ、新たなＣＰＵが開発された場合にも、入出力制御装置ＩＯＨとノードＮＤとの接続性を低下させることなく、パケットを送受信することができる。
【０１１４】
入出力制御装置ＩＯＨの回路規模を、アドレスデコーダテーブル２２およびソースアドレスデコーダ２０が搭載された入出力制御装置ＩＯＨの回路規模に比べて小さくすることができる。入出力制御装置ＩＯＨのルータ２４０は、既存のルーティングテーブル２５０を参照することで、新たな回路を設けることなく、応答パケットの送信元のノードＮＤを示す識別情報ＮＤＩＤを取得することができる。入出力制御装置ＩＯＨの応答受信部４８は、既存の要求元テーブル４２を参照することで、新たな回路を設けることなく、アクセス履歴テーブル２１０の識別情報ＮＤＩＤを更新することができる。
【０１１５】
アクセス履歴テーブル２１０に有効な識別情報ＮＤＩＤが格納されていない場合、予測部２２０が識別情報ＮＤＩＤを所定の規則に従い選択することで、リクエスト生成部４６は、誤動作することなく、パケットをノードＮＤのいずれかに送信することができる。
【０１１６】
図１８は、情報処理装置、入出力制御装置および情報処理装置の制御方法の別の実施形態を示す。図１から図１７で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。図１８に示す入出力制御装置ＩＯＨは、図５に示すアクセス履歴テーブル２１０、予測部２２０および応答受信部４８の代わりに、アクセス履歴テーブル２１０Ａ、予測部２２０Ａおよび応答受信部４８Ａを有する。入出力制御装置ＩＯＨにおいて、アクセス履歴テーブル２１０Ａ、予測部２２０Ａおよび応答受信部４８Ａを除く構成は、図５に示す入出力制御装置ＩＯＨと同様である。また、入出力制御装置ＩＯＨに接続されるノードＮＤ（ＣＰＵ）の構成は、図２と同一または同様である。すなわち、この実施形態の情報処理装置の構成は、図１と同一または同様である。アクセス履歴テーブル２１０Ａの例は図１９に示され、予測部２２０Ａの動作の例は図２０に示され、応答受信部４８Ａの動作の例は図２１に示される。
【０１１７】
図１９は、図１８に示すアクセス履歴テーブル２１０Ａの例を示す。アクセス履歴テーブル２１０Ａは、パケットに含まれる物理アドレスＰＡのハッシュ値と、ＶＡＬＩＤフラグと、メモリアクセス要求の送信先と予測されるノードＮＤを示す識別情報ＮＤＩＤとを格納する複数の領域を有する。すなわち、アクセス履歴テーブル２１０Ａは、物理アドレスＰＡのハッシュ値とＶＡＬＩＤフラグと識別情報ＮＤＩＤとを含む複数のエントリを記憶する。アクセス履歴テーブル２１０Ａに格納されるＶＡＬＩＤフラグおよび識別情報ＮＤＩＤは、図８に示すアクセス履歴テーブル２１０に格納されるＶＡＬＩＤフラグおよび識別情報ＮＤＩＤと同様である。
【０１１８】
アクセス履歴テーブル２１０Ａに格納される物理アドレスＰＡのハッシュ値は、ノードＮＤからの応答パケットに含まれる物理アドレスＰＡの一部のビットにより示される。図１９に示す例では、ハッシュ値は、物理アドレスＰＡ［３９：０］の上位の８ビット（ＰＡ［３９：３２］）である。すなわち、ハッシュ関数は、物理アドレスＰＡからＰＡ［３９：３２］を抽出する関数である。なお、他のハッシュ関数を用いて物理アドレスＰＡから生成されたハッシュ値が、アクセス履歴テーブル２１０Ａに記憶されてもよい。
【０１１９】
図１９に示すアクセス履歴テーブル２１０Ａは、図８に示すアクセス履歴テーブル２１０と同様に、図３に示すアドレスデコーダテーブル２２に比べて規模が小さい。また、ソースアドレスデコーダ２０と予測部２２０Ａとは、互いに同程度の規模である。このため、予測部２２０Ａおよびアクセス履歴テーブル２１０Ａが搭載された入出力制御装置ＩＯＨの回路規模を、ソースアドレスデコーダ２０およびアドレスデコーダテーブル２２が搭載された入出力制御装置ＩＯＨの回路規模に比べて小さくすることができる。
【０１２０】
アクセス履歴テーブル２１０Ａは、図１８に示す予測部２２０Ａにより参照され、図８に示す応答受信部４８Ａにより更新される。ハードディスクドライブ装置等の入出力装置ＩＯは、セクタ等のブロック単位でデータが入出力されるため、メモリＭＥＭの連続した記憶領域にアクセスすることが多い。この場合、入出力装置ＩＯからのメモリアクセス要求に基づいてノードＮＤに送信される複数のパケット（ストアリクエストまたはロードリクエスト）に含まれる物理アドレスＰＡのハッシュ値は連続する。このため、予測部２２０Ａは、アクセス履歴テーブル２１０Ａに格納されたハッシュ値に基づいて、パケットの送信先のノードＮＤの識別情報ＮＤＩＤを正しく予測することができる。パケット制御部４０がアクセス履歴テーブル２１０Ａを更新する例は、図２２に示す。
【０１２１】
図２０は、図１８に示す予測部２２０Ａの動作の例を示す。図２０は、情報処理装置ＩＰＥの制御方法の例を示す。予測部２２０Ａは、パケット制御部４０が入出力装置ＩＯからメモリアクセス要求を受信した場合に図２０に示す動作を開始する。なお、図２０に示す動作は、図１０に示すステップＳ２０８、Ｓ２１０、Ｓ２１２の代わりに実行される。すなわち、予測部２２０Ａは、メモリアクセス要求を発行した入出力装置ＩＯが過去にアクセスしたノードＮＤを検索する代わりに、物理アドレスＰＡのハッシュ値に対応して過去のアクセスされたノードＮＤを検索する。入出力制御装置ＩＯＨがストアリクエストまたはロードリクエストのパケットをＣＰＵに送信する動作は、図１０のステップＳ２０８、Ｓ２１０、Ｓ２１２の代わりに図２０の動作が実行されることを除き、図１０と同様である。
【０１２２】
まず、ステップＳ３０２において、予測部２２０Ａは、入出力装置ＩＯが発行するメモリアクセス要求に含まれる物理アドレスＰＡをパケット制御部４０から受け、受けた物理アドレスＰＡの８ビット［３９：３２］を取り出して、ハッシュ値を生成する。
【０１２３】
次に、ステップＳ３０４において、予測部２２０Ａは、生成したハッシュ値を、アクセス履歴テーブル２１０Ａに格納されたハッシュ値と比較する。次に、ステップＳ３０６において、予測部２２０Ａは、アクセス履歴テーブル２１０内に、生成したハッシュ値を含むエントリがあるかを判定する。
【０１２４】
生成したハッシュ値を含むエントリがある場合、ステップＳ３０８において、予測部２２０Ａは、生成したハッシュ値とともにエントリに含まれる識別情報ＮＤＩＤを選択する。一方、生成したハッシュ値を含むエントリがない場合、ステップＳ３１０において、予測部２２０Ａは、インタコネクトＩＣＮＴに接続されたノードＮＤを識別する識別情報ＮＤＩＤの１つを、ランダムに選択する。すなわち、予測部２２０Ａは、生成したハッシュ値を含むエントリがない場合、パケットを送信するノードＮＤをランダムに予測する。
【０１２５】
なお、図１０に示すステップＳ２１２と同様に、予測部２２０Ａは、生成したハッシュ値を含むエントリがない場合、ランダム以外の所定の規則に従い識別情報ＮＤＩＤを選択してもよい。ランダム以外の所定の規則は、昇順、降順等である。そして、ステップＳ３１２において、予測部２２０Ａは、選択した識別情報ＮＤＩＤをリクエスト生成部４６に出力し、動作を終了する。
【０１２６】
図２１は、図１８に示す応答受信部４８Ａの動作の例を示す。図２１は、情報処理装置ＩＰＥの制御方法の例を示す。応答受信部４８Ａは、ルータ２４０を介してノードＮＤのいずれかから応答パケットを受信した場合に図２１に示す動作を開始する。なお、図２１に示す動作は、図１２に示すステップＳ２３０の代わりに実行される。入出力制御装置ＩＯＨがＣＰＵから応答パケットを受けた場合の動作は、図１２のステップＳ２３０の代わりに図２１の動作が実行されることを除き、図１２と同様である。
【０１２７】
まず、ステップＳ４０２において、応答受信部４８Ａは、応答パケットに含まれる物理アドレスＰＡの８ビット［３９：３２］を取り出して、ハッシュ値を生成する。次に、ステップＳ４０４において、応答受信部４８Ａは、生成したハッシュ値を、アクセス履歴テーブル２１０Ａに格納されたハッシュ値と比較する。
【０１２８】
次に、ステップＳ４０６において、応答受信部４８Ａは、アクセス履歴テーブル２１０内に、生成したハッシュ値を含むエントリがあるかを判定する。生成したハッシュ値を含むエントリがある場合、応答受信部４８Ａは、ステップＳ４０８を実行し、生成したハッシュ値を含むエントリがない場合、応答受信部４８Ａは、ステップＳ４１０を実行する。
【０１２９】
ステップＳ４０８において、応答受信部４８Ａは、アクセス履歴テーブル２１０Ａにおいて、生成したハッシュ値とともにエントリに含まれる識別情報ＮＤＩＤを、図１２のステップ２２２で取得した識別情報ＮＤＩＤに書き替える。すなわち、応答受信部４８Ａは、応答パケットを送信した送信元のノードＮＤをアクセス履歴テーブル２１０Ａに登録することで、アクセス履歴テーブル２１０Ａを更新する。そして、応答受信部４８Ａによるアクセス履歴テーブル２１０の更新動作は完了する。
【０１３０】
一方、ステップＳ４１０において、応答受信部４８Ａは、ステップＳ４０２で生成したハッシュ値と、図１２のステップ２２２で取得した識別情報ＮＤＩＤとを含むエントリを空いている領域に格納する。そして、生成したハッシュ値と識別情報ＮＤＩＤとを含むエントリのＶＡＬＩＤフラグを”１”に設定する。なお、エントリを格納する領域がない場合、追い出しアルゴリズムに基づき、エントリを上書きすることで、生成したハッシュ値と、図１２のステップ２２２で取得した識別情報ＮＤＩＤとを含むエントリをアクセス履歴テーブル２１０Ａに格納する。追い出しアルゴリズムは、ＦＩＦＯ（First-In First-Out）またはＬＲＵ（Least Recently Used）等が使用される。そして、応答受信部４８Ａによるアクセス履歴テーブル２１０の更新動作は完了する。
【０１３１】
図２２は、図１９に示すアクセス履歴テーブル２１０Ａを更新する例を示す。図２２は、情報処理装置ＩＰＥの制御方法の例を示す。図２２では、アクセス履歴テーブル２１０Ａにおけるエントリの格納数は、”２”とする。図２２において、物理アドレスＰＡの上位８ビットに付した下線は、ハッシュ値を示す。
【０１３２】
アクセス履歴テーブル２１０Ａにおけるエントリを格納する全ての領域は、情報処理装置ＩＰＥに電源が投入された後の初期化処理により、初期状態にリセットされる（図２２（ａ））。ハッシュ値の初期値は”０ｘＦＦ”であり、ＶＡＬＩＤフラグの初期値および識別情報ＮＤＩＤの初期値は”０”である。なお、ハッシュ値の初期値は”０ｘ００”等でもよい。
【０１３３】
まず、入出力制御装置ＩＯＨは、入出力装置ＩＯからの物理アドレスＰＡ＝”０ｘ００００００１０００”を示すメモリアクセス要求に基づき、予測部２２０Ａにパケットの送信先のノードＮＤを示す識別情報ＮＤＩＤを予測させる。予測部２２０Ａは、生成したハッシュ値（０ｘ００）を含むエントリがアクセス履歴テーブル２１０Ａに存在しないため、識別情報ＮＤＩＤをランダムに生成する。そして、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ００００００１０００”とランダムな識別情報ＮＤＩＤとを含むパケットを送信する（図２２（ｂ））。
【０１３４】
この後、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ００００００１０００”を含む応答パケットをノードＮＤ０から受信する。図１８に示す応答受信部４８Ａは、受信した物理アドレスＰＡからハッシュ値（０ｘ００）を生成する。そして、応答受信部４８は、生成したハッシュ値をアクセス履歴テーブル２１０Ａの空いている領域に格納し、ＶＡＬＩＤフラグを”１”に設定し、応答パケットを受信したノードＮＤ０を示す識別情報ＮＤＩＤを”０”に設定する（図２２（ｃ））。すなわち、エントリがアクセス履歴テーブル２１０Ａに記憶される。
【０１３５】
次に、入出力装置ＩＯからの物理アドレスＰＡ＝”０ｘ０１００００１０００”を示すメモリアクセス要求に基づき、予測部２２０Ａにパケットの送信先のノードＮＤを示す識別情報ＮＤＩＤを予測させる。予測部２２０Ａは、生成したハッシュ値（０ｘ０１）を含むエントリがアクセス履歴テーブル２１０Ａに存在しないため、識別情報ＮＤＩＤをランダムに生成する。そして、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ０１００００１０００”とランダムな識別情報ＮＤＩＤとを含むパケットを送信する（図２２（ｄ））。
【０１３６】
この後、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ０１００００１０００”を含む応答パケットをノードＮＤ１から受信する。応答受信部４８Ａは、受信した物理アドレスＰＡからハッシュ値（０ｘ０１）を生成する。そして、応答受信部４８は、生成したハッシュ値をアクセス履歴テーブル２１０Ａの空いている領域に格納し、ＶＡＬＩＤフラグを”１”に設定し、応答パケットを受信したノードＮＤ１を示す識別情報ＮＤＩＤを”１”に設定する（図２２（ｅ））。すなわち、エントリがアクセス履歴テーブル２１０Ａに記憶される。
【０１３７】
次に、入出力装置ＩＯからの物理アドレスＰＡ＝”０ｘ０１００００２０００”を示すメモリアクセス要求に基づき、予測部２２０Ａにパケットの送信先のノードＮＤを示す識別情報ＮＤＩＤを予測させる。予測部２２０Ａは、ハッシュ値（０ｘ０１）を生成し、アクセス履歴テーブル２１０Ａに記憶されたハッシュ値（０ｘ０１）を含むエントリから識別情報ＮＤＩＤ（＝１）を読み出す。そして、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ０１００００２０００”と識別情報ＮＤＩＤ（＝１）とを含むパケットを送信する（図２２（ｆ））。
【０１３８】
この後、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ０１００００２０００”を含む応答パケットをノードＮＤ１から受信する。応答受信部４８Ａは、受信した物理アドレスＰＡからハッシュ値（０ｘ０１）を生成する。応答受信部４８は、生成したハッシュ値を含むエントリがアクセス履歴テーブル２１０Ａにあるため、生成したハッシュ値を含むエントリに、応答パケットを受信したノードＮＤ１を示す識別情報ＮＤＩＤを”１”に格納する（図２２（ｇ））。
【０１３９】
次に、入出力装置ＩＯからの物理アドレスＰＡ＝”０ｘ０２００００１０００”を示すメモリアクセス要求に基づき、予測部２２０Ａにパケットの送信先のノードＮＤを示す識別情報ＮＤＩＤを予測させる。予測部２２０Ａは、生成したハッシュ値（０ｘ０２）を含むエントリがアクセス履歴テーブル２１０Ａに存在しないため、識別情報ＮＤＩＤをランダムに生成する。そして、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ０２００００１０００”とランダムな識別情報ＮＤＩＤとを含むパケットを送信する（図２２（ｈ））。
【０１４０】
この後、入出力制御装置ＩＯＨは、物理アドレスＰＡ＝”０ｘ０２００００１０００”を含む応答パケットをノードＮＤ０から受信する。応答受信部４８Ａは、受信した物理アドレスＰＡからハッシュ値（０ｘ０２）を生成する。応答受信部４８は、アクセス履歴テーブル２１０Ａに空いている領域が存在しないため、追い出しアルゴリズムに基づき、エントリを書き替える。この例では、アクセス履歴テーブル２１０Ａの２行目に記憶されたエントリが、ハッシュ値（０ｘ０２）および識別情報ＮＤＩＤ（＝０）に書き替えられる（図２２（ｉ））。
【０１４１】
以上、図１８から図２２に示す実施形態においても、図１から図１７に示す実施形態と同様の効果を得ることができる。さらに、図１８から図２２に示す実施形態では、物理アドレスＰＡのハッシュ値を含むエントリをアクセス履歴テーブル２１０Ａに記憶することで、予測部２２０Ａは、パケットの送信先のノードＮＤの識別情報ＮＤＩＤを正しく予測することができる。
【０１４２】
図２３は、情報処理装置、入出力制御装置および情報処理装置の制御方法の別の実施形態におけるパケットの例を示す。この実施形態では、応答パケット（ストア応答およびロード応答のパケット）に、パケットの送信元の識別情報を示すソースＳＲＣが追加される。パケットのその他の構成は、図９と同様である。情報処理装置ＩＰＥの構成は、図１と同一または同様であり、各ノードＮＤのＣＰＵの構成は、図２と同一または同様である。入出力制御装置ＩＯＨの構成は、応答受信部４８の動作が異なることを除き、図５と同様である。なお、図２３に示すパケットは、図１８に示す入出力制御装置ＩＯＨを含む情報処理装置ＩＰＥに適用されてもよい。この場合、入出力制御装置ＩＯＨの構成は、応答受信部４８Ａの動作が異なることを除き、図１８と同様である。
【０１４３】
図２３では、応答パケットがソースＳＲＣを含むため、応答受信部４８（または４８Ａ）は、応答パケットの受信時に、ルーティングテーブル２５０を参照することなく、応答パケットの送信元のノードＮＤを示す識別情報ＮＤＩＤを取得可能である。
【０１４４】
図２４は、図２３に示すパケットを送受信する入出力制御装置ＩＯＨが、ＣＰＵから応答パケットを受けた場合の動作の例を示す。図２４は、情報処理装置ＩＰＥの制御方法の例を示す。図１２と同一または同様の処理については、図１２と同じ符号を付し、詳細な説明は省略する。図２４は、図１２に示すステップＳ２２２の代わりにステップＳ２２３が実行されることを除き、図１２の動作と同様である。
【０１４５】
ステップＳ２２３では、応答受信部４８（または４８Ａ）は、応答パケットのソースＳＲＣを参照し、応答パケットの送信元のノードＮＤを示す識別情報ＮＤＩＤを取得する。これにより、入出力制御装置ＩＯＨは、ルーティングテーブル２５０を参照することなく、応答パケットの送信元のノードＮＤを示す識別情報ＮＤＩＤを取得することができる。なお、応答パケットのソースＳＲＣに基づき、識別情報ＮＤＩＤを取得する処理は、応答受信部４８（または４８Ａ）でなく、ルータ２４０により実行されてもよい。
【０１４６】
以上、図２３から図２４に示す実施形態においても、図１から図２２に示す実施形態と同様の効果を得ることができる。さらに、図２３から図２４に示す実施形態では、ルーティングテーブル２５０を参照することなく、応答パケットの送信元の識別情報ＮＤＩＤを取得することができる。この結果、図１から図１７に示す実施形態に比べて、応答パケットの送信元の識別情報ＮＤＩＤを取得する時間を短縮することができ、応答パケットの受信時の処理効率を向上することができる。
【０１４７】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１４８】
１０…演算部；１２…アドレス変換部；１４…キャッシュ管理部；１６…キャッシュメモリ；１８…メモリアクセス部；２０…ソースアドレスデコーダ；２２…アドレスデコーダテーブル；２４…パケット制御部；２６…リクエスト生成部；２８…応答受信部；３０…リクエスト受信部；３２…応答生成部；４６…リクエスト生成部；４８、４８Ａ…応答受信部；５０…リクエスト受信部；５２…応答生成部；１００…演算処理部；１１０…ルータ；１２０ａ、１２０ｂ…ポート；２００…入出力バスブリッジ；２１０、２１０Ａ…アクセス履歴テーブル；２２０、２２０Ａ…予測部；２３０ａ、２３０ｂ…入出力ポート；２４０…ルータ；２５０…ルーティングテーブル；２６０ａ、２６０ｂ…ポート；ＤＡＴＡ…データ；ＤＳＴ…ディスティネーション；ＩＣＮＴ…インタコネクト；ＩＯ０、ＩＯ１…入出力装置；ＩＯＢＵＳ…入出力バス；ＩＯＩＤ…識別情報；ＩＰＥ…情報処理装置；ＭＢＵＳ０、ＭＢＵＳ１…メモリバス；ＭＥＭ００、ＭＥＭ０１、ＭＥＭ０２、ＭＥＭ１０、ＭＥＭ１１、ＭＥＭ１２…メモリ；ＮＤ０、ＮＤ１…ノード；ＮＤＩＤ…識別情報；ＯＰＣＤ…オペレーションコード；ＰＡ…物理アドレス；ＰＴＩＤ…ポート情報；ＲＥＱＩＤ…識別情報；ＲＥＳＵＬＴ…結果コード；ＳＲＣ…ソース
【図１】
2016004461.tif 000003
【図２】
2016004461.tif 000004
【図３】
2016004461.tif 000005
【図４】
2016004461.tif 000006
【図５】
2016004461.tif 000007
【図６】
2016004461.tif 000008
【図７】
2016004461.tif 000009
【図８】
2016004461.tif 000010
【図９】
2016004461.tif 000011
【図１０】
2016004461.tif 000012
【図１１】
2016004461.tif 000013
【図１２】
2016004461.tif 000014
【図１３】
2016004461.tif 000015
【図１４】
2016004461.tif 000016
【図１５】
2016004461.tif 000017
【図１６】
2016004461.tif 000018
【図１７】
2016004461.tif 000019
【図１８】
2016004461.tif 000020
【図１９】
2016004461.tif 000021
【図２０】
2016004461.tif 000022
【図２１】
2016004461.tif 000023
【図２２】
2016004461.tif 000024
【図２３】
2016004461.tif 000025
【図２４】
2016004461.tif 000026