(57)【要約】【課題】データ転送における処理効率を向上させることのできる情報処理システムを提供する。【解決手段】演算手段と通信路を介して接続された情報処理装置１５０であって、プリロードコマンドが発行されると、メモリ１４０〜１４３にアクセスし、メモリ１４０〜１４３に格納されているデータを、バッファメモリ１２２に転送するメモリアクセス手段１２０と、演算手段１１からリードコマンドを取得した場合に、プリロードが完了したか否かを判定するバッファメモリ監視手段１２４と、バッファメモリ監視手段１２４がプリロードが完了していないと判定した場合に、バッファメモリ１２２に格納されているデータ以外のデータである旨を示すエラーデータをバスを介して演算手段に転送する転送手段１２０とを備えた。【選択図】        図１
2007041812.tif 000002
【特許請求の範囲】
【請求項１】
演算手段と通信路を介して接続された情報処理装置であって、
前記演算手段がメモリからバッファメモリへのデータの転送を示すプリロードコマンドを発行すると、当該情報処理装置に接続された前記メモリにアクセスし、前記メモリに格納されているデータを、前記通信路を介して前記演算手段に接続された前記バッファメモリに転送するメモリアクセス手段と、
前記演算手段から前記バッファメモリに格納されているデータに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視手段と、
前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記通信路を介して前記演算手段に転送する転送手段と
を備えたことを特徴とする情報処理装置。
【請求項２】
当該情報処理装置は、メモリバスを介して前記演算手段に接続し、
前記メモリアクセス手段は、前記演算手段により発行された前記プリロードコマンドに基づいて、当該情報処理装置に接続された外部メモリにアクセスし、前記外部メモリに格納されている前記データを、前記メモリバスを介して前記演算手段に接続された前記バッファメモリに転送し、
前記転送手段は、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記エラーデータを前記メモリバスを介して前記演算手段に転送することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記演算手段においてエラーを発生させるエラーマークを格納するエラーマーク格納手段をさらに備え、
前記転送手段は、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記エラーマーク格納手段に格納されている前記エラーマークを前記エラーデータとして前記演算手段に転送することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記演算手段においてエラーを発生させるエラーマークを格納するエラーマーク格納手段と、
前記エラーマーク格納手段に格納されている前記エラーマークおよび前記バッファメモリ監視手段における監視結果に基づいて前記エラーデータを生成するエラーデータ生成手段と
をさらに備え、
前記転送手段は、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記エラーデータ生成手段により生成された前記エラーデータを前記演算手段に転送することを特徴とする請求項１または２に記載の情報処理装置。
【請求項５】
前記エラーデータ生成手段は、前記エラーマーク格納手段に格納されている前記エラーマークに前記バッファメモリ監視手段における監視結果を付与することにより前記エラーデータを生成することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記バッファメモリ監視手段は、前記バッファメモリ中の各アドレスに対する領域にデータが格納されたか否かを監視し、
前記エラーデータ生成手段は、前記エラーマークに前記監視結果として前記バッファメモリ中のいずれのアドレスに対する領域にデータが格納されていないかを示す情報を付与することにより前記エラーデータを生成することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記転送手段は、前記バッファメモリ監視手段が前記プリロードが完了したと判定した場合に、前記バッファメモリに格納されている、前記データサイズ分のデータを前記演算手段に一括転送することを特徴とする請求項１から６のいずれか一項に記載の情報処理装置。
【請求項８】
バッファメモリと、
前記バッファメモリにデータを書き込む書き込み制御手段と、
前記書き込み制御手段により前記データが前記バッファメモリに書き込まれているか否かを、前記バッファメモリから前記データが読み出される前に監視するバッファメモリ監視手段と、
前記バッファメモリ監視手段が前記バッファメモリに前記データが書き込まれていないと判定した場合に、前記バッファメモリに前記データが書き込まれていない旨を示すエラーデータを転送する転送手段と
を備えたことを特徴とする情報処理装置。
【請求項９】
演算手段と、当該演算手段と通信路を介して接続された情報処理装置とを備えた情報処理システムであって、
前記情報処理装置は、
前記演算手段がメモリからバッファメモリへのデータの転送を示すプリロードコマンドを発行すると、当該情報処理装置に接続された前記メモリにアクセスし、前記メモリに格納されているデータを、前記通信路を介して前記演算手段に接続された前記バッファメモリに転送するメモリアクセス手段と、
前記演算手段から前記バッファメモリに格納されているデータに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視手段と、
前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記通信路を介して前記演算手段に転送する転送手段と
を有することを特徴とする情報処理システム。
【請求項１０】
前記情報処理装置に接続された外部メモリをさらに備え、
前記情報処理装置は、メモリバスを介して前記演算手段に接続し、
前記メモリアクセス手段は、前記演算手段により発行された前記プリロードコマンドに基づいて、前記外部メモリにアクセスし、前記外部メモリに格納されている前記データを、前記メモリバスを介して前記演算手段に接続された前記バッファメモリに転送し、
前記転送手段は、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記エラーデータを前記メモリバスを介して前記演算手段に転送することを特徴とする請求項９に記載の情報処理システム。
【請求項１１】
前記演算手段は、前記エラーデータを取得した場合に、前記プリロードが完了したか否かを監視し、前記プリロードが完了した場合に前記バッファメモリに格納されている前記データに対する前記リードコマンドを再び発行することを特徴とする請求項９または１０に記載の情報処理システム。
【請求項１２】
前記演算手段は、前記転送手段から転送されたデータに対する演算処理を行い、エラーが発生した場合に、前記エラーデータを取得したと判断することを特徴とする請求項１１に記載の情報処理システム。
【請求項１３】
前記演算手段は、浮動小数点の演算処理を行い、割り込みが発生した場合に、前記エラーデータを取得したと判断することを特徴とする請求項１１に記載の情報処理システム。
【請求項１４】
前記演算手段は、前記エラーデータを予め格納しており、前記転送手段からデータを取得すると、取得した前記データと予め格納している前記エラーデータとを比較し、比較結果に基づいて、前記エラーデータを取得したか否かを判断することを特徴とする請求項１１に記載の情報処理システム。
【請求項１５】
前記演算手段は、前記エラーデータと前記転送手段から取得したデータとが一致した場合に、前記エラーデータを取得したと判断することを特徴とする請求項１４に記載の情報処理システム。
【請求項１６】
前記演算手段は、前記プリロードコマンドの発行タイミングと前記リードコマンドの発行タイミングの間の時間を示すアクセス間隔時間を予め保持し、前記プリロードコマンドを発行し前記アクセス間隔時間が経過した後に、前記リードコマンドを発行することを特徴とする請求項９に記載の情報処理システム。
【請求項１７】
演算手段と通信路を介して接続された情報処理装置における情報処理方法であって、
前記演算手段がメモリからバッファメモリへのデータの転送を示すプリロードコマンドを発行するプリロードコマンド発行ステップと、
前記プリロードコマンド発行ステップにおいて前記プリロードコマンドが発行されると、前記情報処理装置が、当該情報処理装置に接続された前記メモリにアクセスし、前記メモリに格納されているデータを、前記通信路を介して前記演算手段に接続された前記バッファメモリに転送するメモリアクセスステップと、
前記情報処理装置が、前記演算手段から前記バッファメモリに格納されているデータに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視ステップと、
前記バッファメモリ監視ステップにおいて記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記通信路を介して前記演算手段に転送する転送ステップと
を有することを特徴とする情報処理方法。
【請求項１８】
メモリにアクセスし、前記メモリに格納されているデータを、バッファメモリに転送するメモリアクセスステップと、
前記バッファメモリに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視ステップと、
前記バッファメモリ監視ステップにおいて前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記リードコマンドの発行元に転送する転送ステップと
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算手段と通信路を介して接続された情報処理装置、当該情報処理装置を含む情報処理システムおよび情報処理方法に関するものである。
【背景技術】
【０００２】
従来からプリロード機能付きメモリモジュールが知られている（例えば「特許文献１」参照）。このメモリモジュールは、メモリバスやメモリスロットに装着されて利用される。ＣＰＵは、メモリジュール内のバッファにデータが格納されるとこれを読み出す。しかし、メモリスロットには割り込み信号がない。そこで、バッファにデータが格納されたか否かを示すフラグをバッファに対応付けて設けておく。ＣＰＵは、メモリモジュールからデータを読み出す場合にはフラグのポーリングを行うことによりバッファにデータが格納されたことを認識した後にデータを読み出していた。
【０００３】
また、入出力バスなどに装着された情報処理装置においては、割り込みをハード的に取り扱うことができるので、ＣＰＵは、割り込みにより情報処理装置中のバッファにデータが格納されたことを認識した後にデータを読み出していた。
【０００４】
【特許文献１】特開２００４−２７２５７６号公報
【非特許文献１】田邊，  安藤，  箱崎，  土肥，  中條，  天野  ：  プリフェッチ機能を有するメモリモジュールによるＰＣ上での間接参照の高速化，  情報処理学会  先進的計算基板システムシンポジウムＳＡＣＳＩＳ２００５，  ＩＳＳＮ−１３４４−０６４０，  ｐｐ．１７−２４  （Ｍａｙ  ２００５）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のメモリモジュールでは、フラグのポーリングにおけるオーバーヘッドによりアプリケーションの処理速度が低下するという問題がある。また入出力バスなどに装着された情報処理装置では、割り込み発生時のオーバーヘッドがマイクロ秒単位で発生してしまう。したがって、処理速度の低下が問題となる。
【０００６】
このような情報処理装置においては、割り込みによるオーバーヘッドを避けるためにポーリングを用いている。特に低遅延性が要求されるＰＣクラスタ向けネットワークインタフェースカードなどでこの傾向が顕著である。
【０００７】
しかし、ＰＣＩバスやＰＣＩｅｘｐｒｅｓｓへのリードアクセスは数百ナノ秒オーダーの遅延時間がかかってしまう。したがって、この場合には上述のプリロード機能付きメモリモジュール以上に性能が低下してしまう。
【０００８】
本発明は、上記に鑑みてなされたものであって、データ転送における処理効率を向上させることのできる情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、演算手段と通信路を介して接続された情報処理装置であって、前記演算手段がメモリからバッファメモリへのデータの転送を示すプリロードコマンドを発行すると、当該情報処理装置に接続された前記メモリにアクセスし、前記メモリに格納されているデータを、前記通信路を介して前記演算手段に接続された前記バッファメモリに転送するメモリアクセス手段と、前記演算手段から前記バッファメモリに格納されているデータに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視手段と、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記通信路を介して前記演算手段に転送する転送手段とを備えたことを特徴とする。
【００１０】
また、本発明の他の形態は、情報処理装置であって、メモリにアクセスし、前記メモリに格納されているデータを、バッファメモリに転送するメモリアクセス手段と、前記バッファメモリに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視手段と、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記リードコマンドの発行元に転送する転送手段とを備えたことを特徴とする。
【００１１】
また、本発明の他の形態は、演算手段と、当該演算手段と通信路を介して接続された情報処理装置とを備えた情報処理システムであって、前記情報処理装置は、前記演算手段がメモリからバッファメモリへのデータの転送を示すプリロードコマンドを発行すると、当該情報処理装置に接続された前記メモリにアクセスし、前記メモリに格納されているデータを、前記通信路を介して前記演算手段に接続された前記バッファメモリに転送するメモリアクセス手段と、前記演算手段から前記バッファメモリに格納されているデータに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視手段と、前記バッファメモリ監視手段が前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記通信路を介して前記演算手段に転送する転送手段とを有することを特徴とする。
【００１２】
また、本発明の他の形態は、演算手段と通信路を介して接続された情報処理装置における情報処理方法であって、前記演算手段がメモリからバッファメモリへのデータの転送を示すプリロードコマンドを発行するプリロードコマンド発行ステップと、前記プリロードコマンド発行ステップにおいて前記プリロードコマンドが発行されると、前記情報処理装置が、当該情報処理装置に接続された前記メモリにアクセスし、前記メモリに格納されているデータを、前記通信路を介して前記演算手段に接続された前記バッファメモリに転送するメモリアクセスステップと、前記情報処理装置が、前記演算手段から前記バッファメモリに格納されているデータに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視ステップと、前記バッファメモリ監視ステップにおいて記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記通信路を介して前記演算手段に転送する転送ステップとを有することを特徴とする。
【００１３】
また、本発明の他の形態は、情報処理方法であって、メモリにアクセスし、前記メモリに格納されているデータを、バッファメモリに転送するメモリアクセスステップと、前記バッファメモリに対するリードコマンドを取得した場合に、前記バッファメモリのデータサイズ分のデータを前記バッファメモリに格納するプリロードが完了したか否かを判定するバッファメモリ監視ステップと、前記バッファメモリ監視ステップにおいて前記プリロードが完了していないと判定した場合に、前記バッファメモリに格納されている前記データ以外のデータである旨を示すエラーデータを前記リードコマンドの発行元に転送する転送ステップとを有することを特徴とする。
【発明の効果】
【００１４】
本発明にかかる情報処理装置は、バッファメモリへのプリロードが完了する前にリードコマンドを取得した場合には演算手段に対しエラーデータを取得する。このエラーデータにより演算手段は、プリロードが完了していないことを認識することができる。したがって、演算手段は、このようにプリロードが完了していない場合にのみ再度リードコマンドを発行すればよく、プリロードが完了している場合には、ポーリングによりプリロードが完了したか否かを確認することなくプリロードされたデータを取得することができるので、処理効率を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下に、本発明にかかる情報処理装置、情報処理システムおよび情報処理方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１６】
（実施の形態１）
図１は、実施の形態１にかかる情報処理システム１の全体構成を示す図である。情報処理システム１は、ＣＰＵ１１と、ノースブリッジ１２と、サウスブリッジ１３と、主記憶１４と、メモリバス１６と、メモリモジュール１００とを備えている。
【００１７】
メモリモジュール１００は、情報処理装置（ＬＳＩ）１５０と、複数の外部メモリ１４０〜１４３を有している。情報処理装置１５０は、ネットワーク制御部１１０と、メモリバスインタフェース１２０と、外部メモリ制御部１３０とを有している。メモリバスインタフェース１２０は、バッファメモリ１２２と、バッファメモリ監視部１２４と、エラーマーク格納部１２６とを含んでいる。外部メモリ制御部１３０は、アドレス生成部１３２を有している。
【００１８】
ＣＰＵ１１は、主記憶１４や外部メモリ１４０〜１４３のデータを利用して演算を行う。ノースブリッジ１２およびサウスブリッジ１３は、ＣＰＵ１１と他の機器との間を仲介する。ノースブリッジ１２には、メモリバス１６が接続している。メモリバス１６には、主記憶１４およびメモリモジュール１００が接続している。ノースブリッジ１２は、メモリバス１６を介して主記憶１４およびメモリモジュール１００に直接アクセスする。
【００１９】
次に、メモリモジュール１００の構成および処理について説明する。メモリモジュール１００の外部メモリ１４０〜１４３は、ＣＰＵ１１が利用するデータを格納している。情報処理装置１５０は、外部メモリ１４０〜１４３およびネットワークへのアクセスを制御する。情報処理装置１５０のメモリバスインタフェース１２０は、メモリバス１６との間のデータ転送を管理する。メモリバスインターフェース１２０は、転送手段として機能する。
【００２０】
外部メモリ制御部１３０のアドレス生成部１３２は、メモリバス１６を介してＣＰＵ１１からプリロードコマンドを取得する。ここで、プリロードとは、バッファメモリ１２２の最大データ容量分のデータがバッファメモリ１２２に格納されることをいう。例えば、バッファメモリ１２２が６４ビットの容量である場合には、６４ビットのデータが格納された場合にプリロード完了と判定される。
【００２１】
アドレス生成部１３２は、プリロードコマンドを取得すると、プリロードコマンドに基づいて、プリロードコマンドにおいて指定されたデータのアドレスを示すコマンドアドレスを生成する。ここで、コマンドアドレスは、メモリモジュール１００の外部メモリ制御部１３０がアクセスすることのできるＩ／Ｏ空間上のアドレスである。Ｉ／Ｏ空間には、外部メモリ１４０〜１４３がマップされている。Ｉ／Ｏ空間については後述する。
【００２２】
メモリバスインタフェース１２０のバッファメモリ１２２は、外部メモリ制御部１３０により外部メモリ１４０〜１４３から読み出されたデータを一時的に格納する。
【００２３】
エラーマーク格納部１２６は、エラーマークを格納する。ＣＰＵ１１がエラーマークを用いて演算処理を行った場合、エラーが発生する。すなわち、エラーマークとは、ＣＰＵ１１により演算処理が実行された場合にエラーが発生するようなデータである。
【００２４】
バッファメモリ監視部１２４は、バッファメモリ１２２を監視する。具体的には、バッファメモリ１２２に、バッファメモリ１２２のサイズ分のデータが格納された場合、すなわちプリロードが完了した場合には、ＣＰＵ１１からのリードアクセスによりバッファメモリ１２２のサイズ分のデータ、すなわちデータブロック単位でデータをＣＰＵ１１に一括転送する。一方、バッファメモリ１２２にバッファメモリ１２２のサイズ分のデータが格納されていない場合、すなわちプリロードが完了していない場合には、ＣＰＵ１１からのリードアクセスに対し、エラーマーク格納部１２６に格納されたエラーマークを返す。ここで、バッファメモリ１２２とＣＰＵ１１との間でのデータの転送は、バッファメモリ１２２の一部または全部を単位とするブロックサイズを単位として行われる。
【００２５】
ＣＰＵ１１は、メモリバスインタフェース１２０から取得したデータを利用して演算処理を行う。したがって、メモリバスインタフェース１２０から取得したデータがエラーマークである場合には、エラーが発生する。この場合には、ＣＰＵ１１は、取得したデータがエラーマークであったと認識し、バッファメモリ１２２を監視する。そして、バッファメモリ１２２においてプリロードが完了したことを確認した後で再度リードアクセスを発行し、バッファメモリ１２２に格納されているデータを取得する。
【００２６】
具体的には、バッファメモリ１２２のデータブロック（例えば８バイト）ごとにフラグが設けられている。このフラグは、プリロードが完了したか否かを示すものである。ＣＰＵ１１は、このフラグをリードすることにより、各データブロックのプリロードが完了したか否か、すなわちデータブロックにデータが格納されたか否かを監視する。そして、プリロード完了を示す値になったことが確認された場合に、実際のリードコマンドを発行し、対応するデータブロックを得る。
【００２７】
例えば、浮動小数としてＣＰＵ側で演算を行なう場合、エラーマーク格納部１２６は、浮動小数として演算した際に割り込みを発生する形式のデータを格納する。具体的には、例えばＩＥＥＥ７５４準拠の演算器で実行される場合には非数（ＮａＮ）を格納する。
【００２８】
ＣＰＵ１１は、バッファメモリ１２２においてプリロードが完了した後にリードアクセスを発行した場合には、バッファメモリ１２２のデータを取得する。一方、バッファメモリ１２２においてプリロードが完了する前にリードアクセスを発行した場合には、ＮａＮを取得する。
【００２９】
ＮａＮを取得した場合には、それを浮動小数演算器で演算すると非数割込みが発生し、割り込みハンドラが起動する。ＣＰＵ１１は、割り込みハンドラの起動により、データの受け渡しにエラーあったことを認識する。
【００３０】
また、浮動少数点演算以外の演算処理においては、当該演算処理のプログラムにおいて、予め演算処理において利用しないデータ、すなわち利用した場合にエラーが発生するようなデータを定義しておく。さらに、このデータをエラーマーク格納部１２６にも格納しておく。これにより、多様なプログラムにおいて、エラーマークを利用することができる。
【００３１】
図２は、外部メモリ制御部１３０の処理を説明するための図である。外部メモリ１４０〜１４３は例えばＩ／Ｏ空間などの巨大なアドレス空間にマップされている。外部メモリ制御部１３０は、アドレス生成部１３２により生成されたコマンドアドレスによりＩ／Ｏ空間上の不連続な領域に存在している複数のデータに順番にアクセスし、アクセス順にデータをバッファメモリ１２２に格納していく。図２に示すようにバッファメモリ１２２が例えば６４ビットサイズである場合には、６４ビット分のデータがコマンドアドレス順に格納される。
【００３２】
このように、外部メモリ制御部１３０は、ＣＰＵ１１により発行されたプリロードコマンドから生成されたコマンドアドレスにより所定のデータを読み出し、バッファメモリ１２２に書き込む。
【００３３】
外部メモリ制御部１３０は、外部メモリ１４０〜１４３対してデータ単位でアクセスし、必要なデータをバッファメモリ１２２に書き込む。プリロードが完了すると、ＣＰＵ１１からのリードコマンドに応じてバッファメモリ１２２に格納されているデータがＣＰＵ１１に転送される。このとき、バッファメモリ１２２のデータは、バッファメモリ１２２のサイズ分のデータ、すなわちデータブロック単位で一括転送される。
【００３４】
ＣＰＵ１１がキャッシュライン単位でメモリバス１６を介してデータを読み出す場合には、１つのキャッシュライン中の一部にしか必要なデータが格納されていない場合がある。しかしこの場合でも、このキャッシュライン全体を読み出さなければならない。このためキャッシュライン単位の転送は効率が悪い。
【００３５】
これに対し本実施の形態の情報処理システム１は、バッファメモリ１２２においてプリロードが完了した後にバッファメモリ１２２のデータをデータブロック単位で転送するので、必要なデータのみがメモリバス１６に送出される。したがって、転送効率を向上させることができる。
【００３６】
ＣＰＵ１１は、ＣＰＵアドレス空間上にマップされたバッファメモリ１２２に格納されたデータにアクセスすることができる。ところで、外部メモリ１４０〜１４３はＩ／Ｏ空間にはマップされているが、ＣＰＵアドレス空間にはマップされていない。３２ビットＣＰＵ１１の上限は４ＧＢであるため、８ＧＢの外部メモリ１４０〜１４３の全容量分を直接ＣＰＵ１１からアクセス可能なＣＰＵアドレス空間上に主記憶としてマップすることができないからである。したがって、ＣＰＵ１１は、外部メモリ１４０〜１４３には直接アクセスすることはできない。
【００３７】
つまり、ＣＰＵ１１は、例えば、外部メモリ１４０〜１４３に格納されているデータを取得するためには、まずプリロードコマンドにより外部メモリ１４０〜１４３からバッファメモリ１２２にデータを書き込む。そして、バッファメモリ１２２におけるプリロードが完了した後に、リードアクセスを行い、データブロック単位でバッファメモリ１２２からデータを取得する。このように、ＣＰＵ１１は、バッファメモリ１２２から間接的に外部メモリ１４０〜１４３のデータを得る。
【００３８】
メモリモジュール１００のネットワーク制御部１１０は、この外部メモリ１４０〜１４３にアクセスして送受信に関わるデータを読み書きする。さらに、ＣＰＵ１１が制御用のデータをネットワーク制御部１１０に対して読み書きすることにより、ネットワーク制御部１１０が外部メモリ１４０〜１４３にアクセスしつつ、ＣＰＵ１１から指示された通信を実行することでネットワークインタフェースとしての機能を果たす。
【００３９】
図３は、情報処理システム１によるプリロード処理を示すフローチャートである。ＣＰＵ１１によりプリロードコマンドとしてベクトルロードコマンドが発行されると（ステップＳ１００）、ベクトルロードコマンドは、ノースブリッジ１２およびメモリバス１６を介してメモリモジュール１００に転送される（ステップＳ１０２）。
【００４０】
メモリモジュール１００において、ベクトルロードコマンドが起動され、ベクトルロードコマンドにおいてアクセスすべきコマンドアドレスが生成される。そして、外部メモリ制御部１３０は、外部メモリ１４０〜１４３のうちコマンドアドレスにより特定される領域からデータを読み出し、バッファメモリ１２２にデータを格納する（ステップＳ１０４）。なお、このとき、外部メモリ制御部１３０は、コマンドアドレスの順番に、対応するデータをバッファメモリ１２２に配列していく。
【００４１】
一方、ＣＰＵ１１は、プリロードコマンドを発行した後、リードコマンドを発行する（ステップＳ１１０）。なお、リードコマンドを発行するタイミングは、予め定められていてもよい。例えば、所定の時間が経過したときにリードコマンドを発行することとしてもよい。
【００４２】
発行されたリードコマンドがメモリモジュール１００に転送されると（ステップＳ１１２）、メモリモジュール１００のバッファメモリ監視部１２４は、バッファメモリ１２２においてプリロードが完了したか否かを監視する。プリロードが完了している場合には（ステップＳ１１４，Ｙｅｓ）、バッファメモリ１２２に格納されているデータ、すなわち外部メモリ１４０〜１４３から読み出したデータをＣＰＵ１１に転送すべきデータと決定する（ステップＳ１１６）。
【００４３】
ステップＳ１１４において、プリロードが完了していない場合には（ステップＳ１１４，Ｎｏ）、エラーマーク格納部１２６に格納されているデータをＣＰＵ１１に転送すべきデータと決定する（ステップＳ１１８）。そして、決定したデータをＣＰＵ１１に転送する（ステップＳ１２０）。
【００４４】
ＣＰＵ１１は、メモリモジュール１００からデータを取得すると、取得したデータを利用して演算処理を開始する（ステップＳ１３０）。演算処理においてエラーが発生した場合には（ステップＳ１３２，Ｙｅｓ）、ＣＰＵ１１は、メモリバスインタフェース１２０のバッファメモリ１２２においてプリロードが完了したか否かを監視する（ステップＳ１３４）。ＣＰＵ１１は、プリロードが完了したと判定した場合に（ステップＳ１３６，Ｙｅｓ）、再びリードコマンドを発行する（ステップＳ１３８）。
【００４５】
ＣＰＵ１１が取得するデータブロックにおいては、ベクトルロードコマンドから生成されたコマンドアドレスのうち外部メモリ１４０〜１４３に対応するアドレスのデータがベクトルロードコマンドにおけるコマンドアドレスの順番に配列されている。すなわち、ＣＰＵ１１は、コマンドアドレス順に外部メモリ１４０〜１４３に対応するデータを取得することができる。
【００４６】
なお、この場合バッファメモリ１２２は、例えばメモリバスインタフェース１２０に緊密な位置に配置されたレジスタでフラグを実装し、ＣＰＵ１１からリードできるようにするのが好ましい。さらに、複数（例えば６４ビット）のフラグの状態を１回のリードアクセスにより取得可能とするのが好ましい。
【００４７】
以上のようにＣＰＵ１１は、リードコマンドを発行し（ステップＳ１３８）、ノースブリッジ１２およびメモリバス１６を介してリードコマンドをメモリモジュール１００に転送する（ステップＳ１４０）。メモリモジュール１００は、リードコマンドを取得すると、リードコマンドに対応するデータをＣＰＵ１１に返す（ステップＳ１４２）。すなわち、バッファメモリ１２２に格納されているデータをＣＰＵ１１に転送する。そして、取得したデータを利用して再び演算処理を開始する(ステップＳ１４４)。以上で、情報処理システム１におけるプリロード処理が完了する。
【００４８】
ＣＰＵ１１がバッファメモリ１２２をリードする前にポーリングによりバッファメモリ１２２におけるプリロードが完了したか否かを確認した場合には、バッファメモリ１２２からＣＰＵ１１へのデータ転送において、ポーリングに伴う転送バンド幅低下とアプリケーション処理速度低下が生じてしまう。
【００４９】
図４は、例えば非特許文献１に掲載されているＮＡＳ  ＣＧベンチマークの処理速度のポーリング遅延時間の変化を示す図である。曲線２００は、バッファメモリを１枚だけ使用して処理した場合のデータである。この場合、ポーリング遅延が１５００ナノ秒以上になると、キャッシュを利用しない場合の通常のコンピュータにおける処理性能値（直線２２０）を下回る。すなわち加速率が全く得られなくなる。
【００５０】
また、曲線２１０は、バッファメモリを２枚使用して処理した場合のデータである。バッファメモリを２枚使用した場合には、バッファメモリが１枚の場合に比べて処理性能が向上しており、ポーリング遅延の影響をある程度抑制することができることがわかる。しかし、いずれにしてもポーリング遅延を可能な限り削減することがアプリケーションの性能向上に極めて有効であることがわかる。
【００５１】
これに対し、本実施の形態にかかる情報処理システム１においては、外部メモリ１４０〜１４３からバッファメモリ１２２に対するベクトルロードのスループットが、バッファメモリ１２２からＣＰＵ１１へのリードのスループットより下回らず、安定した転送が行なわれている場合には、ポーリングも不要であり、かつ割り込みも発生しない。
【００５２】
したがって、図４においてポーリング遅延時間が０に相当するＮＡＳ  ＣＧベンチマークの処理性能が得られる。すなわち、アプリケーションの実行速度を大幅に向上させることができる。
【００５３】
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
【００５４】
そうした第１の変更例としては、本実施の形態にかかる情報処理システム１においては、バッファメモリ監視部１２４はプリロードが完了していない場合には、エラーマーク格納部１２６に格納されているエラーマークを転送したが、エラーマーク自体を転送するのにかえてエラーマークを所定の規則に基づいて変形したデータを転送することとしてもよい。
【００５５】
具体的には、バッファメモリ１２２のうちいずれのアドレスに対するリードでミスヒット、すなわちバッファアンダーランエラーが発生したのかを示す情報をエラーマークの一部に刻印したデータをＣＰＵ１１に転送してもよい。すなわち、メモリバスインタフェース１２０は、エラーデータ生成手段として機能してもよい。これにより、ＣＰＵ１１は、エラーの原因究明を行うことが可能となる。さらに、エラーからの復帰に伴うメモリアクセスを減らすことができる。
【００５６】
次に、第２の変更例について説明する。例えば、アプリケーション側でバッファメモリ１２２からＣＰＵ１１へのリードを行なって得たデータに対する浮動小数演算を行なわない場合がある。このような場合には、実施の形態において説明したようなＣＰＵ１１におけるエラー検出処理が行われない。そこで、これにかえて、エラーマーク格納部１２６に格納されているエラーマークと同一のエラーマークをＣＰＵ１１にも格納しておくこととする。そして、ＣＰＵ１１は、バッファメモリ監視部１２４から取得したデータとＣＰＵ１１が格納しているデータとを比較し、一致した場合には、取得したデータがエラーマークであると認識し、バッファメモリ１２２に対するポーリングを開始する。
【００５７】
この場合比較演算をするためのオーバーヘッドは増加するが、メモリアクセスを伴うポーリングに比べればその時間的ロスは少なく、全体としての性能向上を図ることができる。
【００５８】
なお、バッファメモリ監視部１２４から取得したデータとＣＰＵ１１が格納しているデータとが完全に一致する場合だけでなく、例えば一方のデータに所定の演算を施した場合に他方のデータが得られるなど、両データが予め定められた関係を有する場合に、バッファメモリ監視部１２４から取得したデータであると認識することができる。
【００５９】
次に、第３の変更例について説明する。既に述べた通り、バッファメモリ１２２におけるミスヒット、すなわちバッファアンダーランエラーが発生した場合には、ＣＰＵ１１において割り込みが発生したり、ＣＰＵ１１からのリードアクセスを再度行わなければならないなど処理速度が低下してしまう。
【００６０】
したがって、このようなエラーが起こらないタイミングでＣＰＵ１１からバッファメモリ１２２に対するリードアクセスを行うことが望ましい。
【００６１】
そこで、実際のデータ転送を行なう前にＣＰＵ１１がベクトルロードコマンドを起動した後どの程度の時間を待ってからホストＣＰＵがバッファメモリに対して読み出しをかければバッファアンダーランエラーが発生しにくいかを測定しておく。そして、ＣＰＵ１１は、その結果得られた時間間隔、すなわちアクセス時間間隔を予め保持しておく。そして、ベクトルロードコマンドを発行した後、アクセス時間間隔よりも大きい時間間隔をあけてリードアクセスを行うこととする。これにより、エラーの発生を抑制し、処理速度を向上させることができる。
【００６２】
次に、第４の変更例について説明する。図５は、第４の変更例にかかる情報処理システム１の全体構成を示す図である。第４の変更例にかかる情報処理システム１においては、メモリモジュール１００は、ＰＣＩｅｘｐｒｅｓｓＰＣＩｅｘｐｒｅｓｓ１７に接続されている。このように、実施の形態にかかるメモリモジュール１００は、メモリバス１６に接続されていたがメモリモジュール１００はこれ以外の場所に形成されてもよい。
【００６３】
（実施の形態２）
図６は、実施の形態２にかかる情報処理システム２の全体構成を示す図である。情報処理システム２は、情報処理装置３と、サーバ４とを備えている。情報処理装置３とサーバ４とはネットワーク６を介して接続されている。
【００６４】
情報処理装置３は、ネットワークアクセス部３００と、バッファメモリ１２２と、バッファメモリ監視部１２４と、エラーマーク格納部１２６とを有している。情報処理装置３の機能構成は、ネットワークＩ／Ｆ中に設けられてもよい。
【００６５】
ネットワークアクセス部３００は、ネットワーク６を介してサーバ４にアクセスする。バッファメモリ１２２は、サーバ４に送信すべきデータを格納している。バッファメモリ１２２に格納されるデータは、ネットワーク６を介して他の機器から取得されたデータであってもよい。また、エラーマーク格納部１２６が格納するエラーマークは、サーバ４において演算処理が実行された場合にエラーが発生するようなデータである。サーバ４は、情報処理装置３のバッファメモリ１２２に格納されているデータを、ネットワーク６を介して取得する。
【００６６】
図７は、実施の形態２にかかる情報処理システム２におけるプリロード処理を示すフローチャートである。サーバ４は、バッファメモリ１２２に格納されているデータの送信を要求するデータ送信命令を情報処理装置３に送信する(ステップＳ２００)。情報処理装置３のネットワークアクセス部３００がデータ送信命令を取得すると、バッファメモリ監視部１２４は、バッファメモリ１２２に対するプリロードが完了したか否かを監視する。プリロードが完了している場合には(ステップＳ２０２，Ｙｅｓ)、バッファメモリ監視部１２４は、バッファメモリ１２２に格納されているデータをサーバ４に送信すべきデータと決定する(ステップＳ２０４)。
【００６７】
ステップＳ２０２において、プリロードが完了していない場合には(ステップＳ２０２，Ｎｏ)、エラーマーク格納部１２６に格納されているデータをサーバ４に送信すべきデータと決定する(ステップＳ２０６)。そして、ネットワークアクセス部３００は、決定されたデータをネットワーク６を介してサーバ４に送信する(ステップＳ２１０)。
【００６８】
サーバ４は、情報処理装置３からデータを取得すると、取得したデータを利用して演算処理を開始する(ステップＳ２１２)。演算処理においてエラーが発生した場合には(ステップＳ２１４，Ｙｅｓ)、サーバ４は、情報処理装置３のバッファメモリ１２２においてプリロードが完了したか否かを監視する(ステップＳ２１８)。サーバ４はプリロードが完了したと判定した場合に(ステップＳ２１８，Ｙｅｓ)、再び、データ送信命令を情報処理装置３に送信する(ステップＳ２２０)。
【００６９】
実施の形態２にかかる情報処理システム２においては、ネットワークアクセス部３００は、ネットワーク６を介してサーバ４からデータの読み出し命令を取得する。データの読み出し命令とは、バッファメモリ１２２に格納されているデータの読み出しの命令である。データの読み出し命令を取得すると、バッファメモリ監視部１２４は、バッファメモリ１２２に対するプリロードが完了したか否かを判定する。
【００７０】
プリロードが完了したと判定した場合に(ステップＳ２１８，Ｙｅｓ)、再びデータ送信命令を情報処理装置３に送信する(ステップＳ２２０)。情報処理装置３のネットワークアクセス部３００は、バッファメモリ１２２に格納されているデータを読み出しサーバ４に送信する(ステップＳ２２２)。そして、サーバ４は、取得したデータを利用して再び演算処理を開始する(ステップＳ２２４)。以上で、情報処理システム２におけるプリロード処理が完了する。
【００７１】
なお、実施の形態２にかかる情報処理システム２にかかる各部の構成および処理は、実施の形態１にかかる情報処理システム１にかかる各部の構成および処理と同様である。
【００７２】
（実施の形態３）
図８は、実施の形態３にかかる情報処理システム３の全体構成を示す図である。情報処理システム３は、複数のプロセシングエレメント５ａ〜５ｅを備えている。これらは、ネットワーク６を介して接続されている。プロセシングエレメント５ｂ〜５ｅはそれぞれが計算したローカルの結果をネットワーク６を介して順次プロセシングエレメント５ａに転送している。そして、プロセシングエレメント５ａは、各プロセシングエレメント５ｂ〜５ｅから取得したデータの総和を計算する。
【００７３】
プロセシングエレメント５ａは、情報処理装置３と、ＣＰＵ１１と、サウスブリッジ１３と、ノースブリッジ１２と、主記憶１４とを有している。
【００７４】
情報処理装置３は、ノースブリッジ１２およびサウスブリッジ１３を介してＣＰＵ１１に接続している。情報処理装置３は、バッファメモリ監視部１２４と、エラーマーク格納部１２６と、ネットワークアクセス部３００と、ＦＩＦＯ型バッファメモリ３１０とを有している。
【００７５】
ＦＩＦＯ型バッファメモリ３１０には、自身のＣＰＵ１１により計算されたローカルの結果が順次書き込まれる。さらに、ネットワークアクセス部３００を介して他のプロセシングエレメント５ｂ〜５ｅにより計算されたデータの遠隔書き込みが行われる。
【００７６】
プロセシングエレメント５ａは、ＦＩＦＯ型バッファメモリ３１０に書き込まれたデータを加算し総和を得る。具体的には、ＣＰＵ１１は、ＦＩＦＯ型バッファメモリ３１０に書き込まれているデータを読み出して、各データの総和を計算する。
【００７７】
このとき、他の実施の形態において説明したのと同様に、ＦＩＦＯ型バッファメモリ３１０にデータが格納されていないことがバッファメモリ監視部１２４により検出された場合には、エラーマーク格納部１２６に格納されているエラーマークがＣＰＵ１１に返される。これにより、ＣＰＵ１１は、ＦＩＦＯ型バッファメモリ３１０にデータが格納されているか否かを確認することができる。
【００７８】
通常、プロセシングエレメントの個数が多い並列システムでは、プロセシングエレメント５ａのような処理をするプロセシングエレメントの処理がボトルネックになり並列処理による加速率が伸び悩んでしまう。さらに、ＦＩＦＯ型バッファメモリ３１０へのポーリングやデータ受信時の割り込み処理を行うとオーバーベッドが大きく、ボトルネックに拍車がかかってしまう。
【００７９】
これに対し、実施の形態３にかかるプロセシングエレメント５ａにおいては、上述のように、ＣＰＵ１１は、エラーマークによるエラー発生の有無によりデータの有無を確認しながら、演算を実行することができる。多くのプロセシングエレメント５ａは、絶え間なくデータが書き込まれている状況では、ＦＩＦＯ型バッファメモリ３１０が空になることはほとんど無く、ポーリングや割り込み処理が排除される。したがって、総和の処理が軽減し、並列処理による加速率を向上させることができる。
【００８０】
なお、実施の形態３にかかる情報処理システム３のこれ以外の構成および処理は、実施の形態１にかかる情報処理システム１，２の構成および処理と同様である。
【図面の簡単な説明】
【００８１】
【図１】実施の形態１にかかる情報処理システム１の全体構成を示す図である。
【図２】外部メモリ制御部１３０の処理を説明するための図である。
【図３】情報処理システム１によるプリロード処理を示すフローチャートである。
【図４】ＮＡＳ  ＣＧベンチマークの処理速度のポーリング遅延時間の変化を示す図である。
【図５】第４の変更例にかかる情報処理システム１の全体構成を示す図である。
【図６】実施の形態２にかかる情報処理システム２の全体構成を示す図である。
【図７】実施の形態２にかかる情報処理システム２におけるプリロード処理を示すフローチャートである。
【図８】実施の形態３にかかる情報処理システム３の全体構成を示す図である。
【符号の説明】
【００８２】
１，２  情報処理システム
３  情報処理装置
４  サーバ
６  ネットワーク
１１  ＣＰＵ
１２  ノースブリッジ
１３  サウスブリッジ
１４  主記憶
１６  メモリバス
１７  ＰＣＩｅｘｐｒｅｓｓ
１００  メモリモジュール
１１０  ネットワーク制御部
１２０  メモリバスインタフェース
１２２  バッファメモリ
１２４  バッファメモリ監視手段
１２４  バッファメモリ監視部
１２６  エラーマーク格納部
１３０  外部メモリ制御部
１３２  アドレス生成部
１４０〜１４３  外部メモリ
１５０  情報処理装置
３００  ネットワークアクセス部３００
【図１】
2007041812.tif 000003
【図２】
2007041812.tif 000004
【図３】
2007041812.tif 000005
【図４】
2007041812.tif 000006
【図５】
2007041812.tif 000007
【図６】
2007041812.tif 000008
【図７】
2007041812.tif 000009
【図８】
2007041812.tif 000010