(57)【要約】【課題】処理効率を向上させることのできる情報処理システムを提供する。【解決手段】情報処理システム１であって、メモリバス１６に接続され、演算手段１１によりアクセス可能な第１のアドレス空間上にマップされたバッファメモリ１２２と、ページフォルトが発生した場合に、ページフレームの一部または全部を単位とするブロックサイズのブロックデータを第１のアドレス空間上のアドレスに基づいて、バッファメモリ１２２に一括転送を行う転送手段１１と、ページフォルトが発生した場合に、第２のアドレス空間上にマップされたアドレスに基づいて、外部メモリ１４０〜１４３とバッファメモリ１２２との間でページフレームの転送を行う外部メモリ制御手段１３０とを備える。【選択図】        図１
2007041813.tif 000002
【特許請求の範囲】
【請求項１】
演算手段と、
主記憶装置と、
前記演算手段および前記主記憶装置とメモリバスを介して接続された情報処理装置と
を備え、
前記情報処理装置は、
前記メモリバスに接続され、前記演算手段によりアクセス可能な第１のアドレス空間上のアドレスを割り当てられたバッファメモリと、
ページフォルトが発生した場合に、前記ページフレームの一部または全部を単位とするブロックサイズのブロックデータを前記第１のアドレス空間上のアドレスに基づいて、前記バッファメモリに一括転送を行う転送手段と、
前記ページフォルトが発生した場合に、第２のアドレス空間上のアドレスを割り当てられたアドレスに基づいて、当該情報処理装置に接続された外部メモリにアクセスし、当該外部メモリと前記バッファメモリとの間でページフレームの転送を行う外部メモリ制御手段と
を有することを特徴とする情報処理システム。
【請求項２】
前記情報処理装置は、前記ページフォルトが発生した場合に、前記外部メモリ制御手段に接続された前記外部メモリを識別する上位アドレスを、前記アドレス拡張レジスタに書き込むアドレス拡張手段をさらに有し、
前記外部メモリ制御手段は、前記アドレス拡張レジスタに書き込まれた前記上位アドレスに基づいて前記外部メモリにアクセスすることにより前記外部メモリと前記バッファメモリとの間の前記ページフレームの転送を行うことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記転送手段は、前記主記憶装置に格納されている前記ページフレームを前記バッファメモリに退避させ、
前記外部メモリ制御手段は、前記バッファメモリに退避された前記ページフレームを前記外部メモリに書き込むことを特徴とする請求項１または２に記載の情報処理システム。
【請求項４】
前記ページフォルトが発生した場合に、ベクトルストアコマンドを発行するベクトルストアコマンド発行手段をさらに備え、
前記外部メモリ制御手段は、前記ベクトルストアコマンドに基づいて前記第２のアドレス空間上のアドレスを生成し、前記外部メモリのうち当該アドレスにより特定される領域に前記ページフレームを書き込むことを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記外部メモリ制御手段は、前記外部メモリに格納されている前記ページフレームを読み出し、前記バッファメモリに格納し、
前記転送得手段は、前記バッファメモリに格納されている前記ページフレームを前記主記憶装置に書き込むことを特徴とする請求項１から４のいずれか一項に記載の情報処理システム。
【請求項６】
前記ページフォルトが発生した場合に、ベクトルロードコマンドを発行するベクトルロードコマンド発行手段をさらに備え、
前記外部メモリ制御手段は、前記ベクトルロードコマンドに基づいて前記第２のアドレス空間上のアドレスを生成し、前記外部メモリのうち当該アドレスにより特定される領域から前記ページフレームを読み出すことを特徴とする請求項５に記載の情報処理システム。
【請求項７】
前記転送手段は、前記バッファメモリに前記ブロックサイズ分の前記ページフレームが格納された後に、前記バッファメモリに格納されている前記ブロックデータを前記演算装置に一括転送することを特徴とする請求項６に記載の情報処理システム。
【請求項８】
前記ページフォルトが発生した場合に呼び出され、前記外部メモリに対するベクトルストアコマンドおよびベクトルロードコマンドを発行するページフォルト制御部をさらに備え、
前記外部メモリ制御手段は、前記ページフォルト制御手段により発行された前記ベクトルストアコマンドおよび前記ベクトルロードコマンドに基づいて前記外部メモリと前記バッファメモリとの間で前記ページフレームの転送を行うことを特徴とする請求項１に記載の情報処理システム。
【請求項９】
前記ページフォルトが発生した場合に呼び出されるページフォルトハンドラと、
前記ページフォルトハンドラにおいて呼び出され、前記外部メモリに対するベクトルストアコマンドおよびベクトルロードコマンドを発行するページフォルト制御手段と
をさらに備え、
前記外部メモリ制御手段は、前記ページフォルト制御手段により発行された前記ベクトルストアコマンドおよび前記ベクトルロードコマンドに基づいて前記外部メモリと前記バッファメモリとの間で前記ページフレームの転送を行うことを特徴とする請求項１に記載の情報処理システム。
【請求項１０】
前記外部メモリのうち、前記ページフォルトが発生した場合にアクセス可能なページフォルト対応領域を指定するアクセス可能領域指定手段をさらに備え、
前記外部メモリ制御手段は、前記アクセス可能領域指定手段により指定された前記ページフォルト対応領域にアクセスすることを特徴とする請求項１から９のいずれか一項に記載の情報処理システム。
【請求項１１】
前記アクセス可能領域指定手段は、前記外部メモリのうち、キャッシュのミスヒットが生じた場合にアクセス可能なキャッシュミスヒット対応領域をさらに指定し、
前記外部メモリ制御手段は、前記キャッシュのミスヒットが生じた場合には、前記アクセス可能領域指定手段により指定された前記キャッシュミスヒット対応領域にアクセスしてデータを読み出し、
前記転送手段は、前記外部メモリ制御手段によって前記外部メモリから読み出された前記データを前記メモリバスを介して一括転送することを特徴とする請求項１０に記載の情報処理システム。
【請求項１２】
演算手段と、主記憶装置と、前記演算手段および前記主記憶装置とメモリバスを介して接続された情報処理装置とを備えた情報処理システムにおける情報処理方法であって、
ページフォルトが発生した場合に、前記メモリバスに接続され、前記演算手段によりアクセス可能な第１のアドレス空間上割り当てられたバッファメモリに接続された前記メモリバスを介して前記ページフレームの一部または全部を単位とするブロックサイズのブロックデータを前記第１のアドレス空間上のアドレスに基づいて、前記バッファメモリに一括転送を行う転送ステップと、
前記ページフォルトが発生した場合に、第２のアドレス空間上に割り当てられたアドレスに基づいて、当該情報処理装置に接続された外部メモリにアクセスし、当該外部メモリと前記バッファメモリとの間でページフレームの転送を行う外部メモリ制御ステップと
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スワッピング処理を行う情報処理システムおよび情報処理方法に関するものである。
【背景技術】
【０００２】
従来、シリコンディスク、ＲＡＭディスク、拡張記憶と呼ばれている情報処理装置としては、ＰＣＩバスなどの標準入出力バスや、ＩＤＥまたはＳＣＳＩ等のハードディスク向け標準入出力インタフェースや、専用の入出力インタフェースに接続されるものが商品として存在する。
【０００３】
ＰＣＩバスに装着されるものとしてはＣＥＮＡＴＥＫ社のＲｏｃｋｅｔ Ｄｒｉｖｅなどがあり、ＳＣＳＩに接続されるものとしてはＴＥＸＡ社のＲＳＴ ＳＤシリーズ（「非特許文献１」参照）などがある。
【０００４】
また、パーソナルコンピュータ等の主記憶の一部をＲＡＭディスクとして設定することができるソフトウェアが存在する。また、一時ファイルなどをその領域に割り当てることにより高速化を達成することが可能なパッケージソフトウェアやフリーソフトウェアも存在する。
【０００５】
例えば、容量に制約が厳しいが、簡素なものとしてはＭＳ−ＤＯＳのＲＡＭＤＩＳＫ．ＳＹＳドライバなどＯＳに付属しているものがある。また、Ｗｉｎｄｏｗｓ（登録商標）においては、より容量上の制約や使い勝手が改善されたＣＥＮＡＴＥＫ社のＲＡＭＤｉｓｋＮＴやＩＯＤＡＴＡ社のＲａｍＰｈａｎｔｏｍなどがこの方式にあたる。
【０００６】
またプリフェッチ機能付きメモリモジュールが知られている（例えば、「特許文献１」参照）。このメモリモジュールはマザーボード、チップセットおよびＣＰＵは、汎用の部品を使いつつ、メモリスロットに本来装着できる容量以上の記憶容量を有するメモリを装着できるものである。
【０００７】
【特許文献１】特開２００４−２７２５７６号公報
【非特許文献１】ＴＥＸＡ社  “ＲＤＳ  ＳＤシリーズリーフレット”  製品カタログ（２００４．０９．０９）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上述のＣＥＮＡＴＥＫ社のＲｏｃｋｅｔ ＤｒｉｖｅなどＰＣＩバスに装着される拡張記憶は、ハードディスクの代替品として、十分にメリットを見出せる程度に遅延時間が短い。しかし、主記憶へのアクセス経路と比べて低バンド幅・高遅延である。このため、十分に大きな主記憶容量を有するシステム上で、すべてを主記憶上で処理する場合と比較すると、処理内容によっては大幅な性能低下があることが予想される。
【０００９】
また、主記憶の一部をＲＡＭディスクとして設定するソフトウェアにおいては、主記憶の一部を本来の主記憶として用いることができなくなる。このため、あまり多くの容量を拡張記憶として提供することは困難である。限度以上に多くの容量を拡張記憶として設定するなど使い方を誤るとかえって性能低下をもたらしてしまう。
【００１０】
さらに、３２ビットアーキテクチャを有する多くのパーソナルコンピュータ上では４Ｇバイト以上のアドレス空間を主記憶として扱うことができず、この制約を超えるような大容量な拡張記憶を提供することは困難である。
【００１１】
以上説明したように、従来のシリコンディスク、ＲＡＭディスク、拡張記憶と呼ばれている情報処理装置は、十分に大きな主記憶容量を有するシステム上で、全てを主記憶上で処理する場合と比較すると、処理内容によっては大幅な性能低下が生じてしまう。
【００１２】
本発明は、上記に鑑みてなされたものであって、コストを抑えつつ、十分に大きな主記憶容量を有するシステム上で全てを主記憶上で処理する場合に匹敵するアプリケーション処理性能を発揮することのできる情報処理システムを提供する。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明は、演算手段と、主記憶装置と、前記演算手段および前記主記憶装置とメモリバスを介して接続された情報処理装置とを備え、前記情報処理装置は、前記メモリバスに接続され、前記演算手段によりアクセス可能な第１のアドレス空間上のアドレスを割り当てられたバッファメモリと、ページフォルトが発生した場合に、前記ページフレームの一部または全部を単位とするブロックサイズのブロックデータを前記第１のアドレス空間上のアドレスに基づいて、前記バッファメモリに一括転送を行う転送手段と、前記ページフォルトが発生した場合に、第２のアドレス空間上のアドレスを割り当てられたアドレスに基づいて、当該情報処理装置に接続された外部メモリにアクセスし、当該外部メモリと前記バッファメモリとの間でページフレームの転送を行う外部メモリ制御手段とを有することを特徴とする。
【００１４】
また、本発明の他の形態は、演算手段と、主記憶装置と、前記演算手段および前記主記憶装置とメモリバスを介して接続された情報処理装置とを備えた情報処理システムにおける情報処理方法であって、ページフォルトが発生した場合に、前記メモリバスに接続され、前記演算手段によりアクセス可能な第１のアドレス空間上割り当てられたバッファメモリに接続された前記メモリバスを介して前記ページフレームの一部または全部を単位とするブロックサイズのブロックデータを前記第１のアドレス空間上のアドレスに基づいて、前記バッファメモリに一括転送を行う転送ステップと、前記ページフォルトが発生した場合に、第２のアドレス空間上に割り当てられたアドレスに基づいて、当該情報処理装置に接続された外部メモリにアクセスし、当該外部メモリと前記バッファメモリとの間でページフレームの転送を行う外部メモリ制御ステップとを有することを特徴とする。
【発明の効果】
【００１５】
本発明にかかる情報処理システムは、ページフォルトが発生した場合に、第１のアドレス空間上にマップされたバッファメモリのデータサイズ分を単位として、主記憶装置とバッファメモリとの間でページフレームが一括転送され、さらに、第２のアドレス空間上にマップされたアドレスに基づいて、外部メモリとバッファメモリとの間でページフレームが転送される。このように、メモリバスおよびバッファメモリを介して大容量の外部メモリとの間でページフレームの転送を行うことができるので、処理効率を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下に、本発明にかかる情報処理システムおよび情報処理方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１７】
（実施の形態１）
図１は、情報処理システム１の全体構成を示す図である。情報処理システム１は、ＣＰＵ１１と、ノースブリッジ１２と、サウスブリッジ１３と、主記憶１４ａ，１４ｂと、メモリバス１６と、メモリモジュール１００とを備えている。
【００１８】
ＣＰＵ１１は、主記憶１４ａ，１４ｂや外部メモリ１４０〜１４３のデータを利用して演算を行う。ノースブリッジ１２およびサウスブリッジ１３は、ＣＰＵ１１と他の機器との間を仲介する。ノースブリッジ１２には、メモリバス１６が接続している。メモリバス１６には、主記憶１４ａ，１４ｂおよびメモリモジュール１００が接続している。ノースブリッジ１２は、メモリバス１６を介して主記憶１４ａ，１４ｂおよびメモリモジュール１００に直接アクセスする。
【００１９】
情報処理システム１は、上限が１ＧＢの３つのメモリスロット（図示せず）を備えている。このうち２本にはビット単価の安い５１２ＭＢのメモリモジュールを装着する。これにより、合計１ＧＢの主記憶１４ａ，１４ｂとする。さらに、残りの１本にシリコンディスクとして機能させるベクトルロードストア機能付きのメモリモジュール１００を装着する。
【００２０】
メモリモジュール１００は、ベクトルロードストア機能付きメモリモジュールであり、シリコンディスク上に形成されている。メモリモジュール１００は、ページフォルトハンドラにおいてアクセスされる。さらに、キャッシュのミスヒットにおいてもアクセスされる。
【００２１】
メモリモジュール１００は、情報処理装置１５０と、複数の外部メモリ１４０〜１４３を有している。情報処理装置１５０は、ネットワーク制御部１１０と、メモリバスインタフェース１２０と、外部メモリ制御部１３０とを有している。情報処理装置１５０の各部は、電子回路基板上に形成されている。
【００２２】
メモリモジュール１００には、２ＧＢの外部メモリを構成するメモリモジュールを４枚装着する。これにより、合計８ＧＢの容量の外部メモリ１４０〜１４３が搭載される。８ＧＢの外部メモリ１４０〜１４３は、上限が１ＧＢのメモリスロットに装着されている。
【００２３】
メモリバスインタフェース１２０は、バッファメモリ１２２と、バッファメモリ監視部１２４と、アドレス拡張レジスタ１２６とを含んでいる。外部メモリ制御部１３０は、アドレス生成部１３２を有している。
【００２４】
メモリモジュール１００の外部メモリ１４０〜１４３は、ＣＰＵ１１が利用するデータを格納している。より具体的には、外部メモリ１４０〜１４３は、ページフォルトが発生した場合に、主記憶１４ａ，１４ｂとの間で交換されるページフレームを格納している。
【００２５】
情報処理装置１５０は、外部メモリ１４０〜１４３およびネットワークへのアクセスを制御する。情報処理装置１５０のメモリバスインタフェース１２０は、メモリバス１６との間のデータ転送を管理する。
【００２６】
外部メモリ制御部１３０は、外部メモリ１４０〜１４３とバッファメモリ１２２との間のデータ転送を制御する。具体的には、ベクトルロードコマンドにより連続アクセスを行う。外部メモリ制御部１３０のアドレス生成部１３２は、メモリバス１６を介してＣＰＵ１１からベクトルロードコマンドまたはベクトルストアコマンドを取得する。ここで、ベクトルロードとは、所定のサイズのデータを外部メモリ１４０〜１４３から読み出し、バッファメモリ１２２に書き込むことをいう。ベクトルストアとは、所定のサイズのデータを読み出し、外部メモリ１４０〜１４３に書き込むことをいう。
【００２７】
アドレス生成部１３２は、ベクトルロードコマンドまたはベクトルストアコマンドを取得すると、取得したコマンドに基づいて、コマンドにおいてアクセスすべきコマンドアドレスを生成する。ここで、コマンドアドレスは、メモリモジュール１００の外部メモリ制御部１３０がアクセスすることのできるＩ／Ｏ空間上のアドレスである。Ｉ／Ｏ空間には、外部メモリ１４０〜１４３がマップされている。
【００２８】
メモリバスインタフェース１２０のバッファメモリ１２２は、外部メモリ制御部１３０により外部メモリ１４０〜１４３から読み出されたデータまたは主記憶１４ａ，１４ｂから読み出されたデータを一時的に格納する。
【００２９】
バッファメモリ監視部１２４は、バッファメモリ１２２を監視する。具体的には、バッファメモリ１２２に、バッファメモリ１２２のデータサイズ分のデータ、すなわちデータブロック単位のページフレームが格納されたか否かを監視する。
【００３０】
外部メモリ制御部１３０は、外部メモリ１４０〜１４３に対してデータ単位でアクセスし、必要なデータをバッファメモリ１２２に書き込む。バッファメモリ１２２へのデータサイズ分のデータの書き込みが完了すると、バッファメモリ１２２に格納されているデータは、主記憶１４ａ，１４ｂにＣＰＵ１１を経由して転送される。このとき、バッファメモリ１２２のデータは、バッファメモリ１２２のサイズ分のデータ、すなわちデータブロック単位で一括転送される。すなわち、データブロックとは、ページフレームの全体または一部を１単位とするサイズである。バッファメモリ１２２のサブブロックのサイズは、バースト転送による転送バンド幅向上の観点からＣＰＵの最下位階層キャッシュのラインサイズとすることが望ましい。
【００３１】
ベクトルストアコマンドにより生成されたコマンドアドレスに基づいて、バッファメモリ１２２に格納されているデータを外部メモリ１４０〜１４３に書き込む場合には、バッファメモリ１２２に連続して格納されているデータを、外部メモリアドレス空間のアドレスにより特定される領域に書き込む。
【００３２】
このように、外部メモリ制御部１３０は、ベクトルロードコマンドまたはベクトルストアコマンドから生成されたコマンドアドレスにより所定のデータの書き込みおよび読み出しを行う。ベクトルロードコマンドおよびベクトルストアコマンドは、例えば、アプリケーションの実行中にページフォルトが発生した場合に発行される。また、キャッシュのミスヒットが生じた場合に発行される。
【００３３】
ページフォルトが発生した場合には、ページフォルトハンドラが起動する。ページフォルトハンドラは、ページング処理を行う。ページフォルトハンドラはさらに、起動時にディスクにアクセスするのにかえて、メモリバスインタフェース１２０に対しベクトルロードコマンドまたはベクトルストアコマンドを発行する。
【００３４】
ＣＰＵ１１は、ＣＰＵがアクセス可能なアドレス空間であるＣＰＵアドレス空間上にマップされたバッファメモリ１２２に格納されたデータにはアクセスすることができる。しかし、ＣＰＵアドレス空間上には外部メモリ１４０〜１４３はマップされていない。３２ビットＣＰＵ１１の上限は４ＧＢであるため、８ＧＢの外部メモリ１４０〜１４３の全容量分を直接ＣＰＵ１１からアクセス可能なＣＰＵアドレス空間上に主記憶としてマップすることができないからである。したがって、外部メモリアドレス空間にはアクセスすることができない。
【００３５】
したがって、例えば、ページフォルトが発生し、主記憶１４ａ，１４ｂに格納されているページフレームを外部メモリ１４０〜１４３に書き込む場合には、まずページフォルトハンドラによりベクトルストアコマンドが発行される。そして、ベクトルストアコマンドにより主記憶１４ａ，１４ｂのページフレームがバッファメモリ１２２に書き込まれる。そして、一旦バッファメモリ１２２に書き込まれたページフレームは、外部メモリ制御部１３０によりバッファメモリ１２２から読み出され、外部メモリ１４０〜１４３の所定の領域に書き込まれる。このとき外部メモリ制御部１３０は、ＣＰＵアドレス空間とは独立した外部メモリアドレス空間上のアドレスに基づいて、外部メモリ１４０〜１４３の所定の領域にアクセスする。
【００３６】
このように、主記憶１４ａ，１４ｂに格納されているページフレームは、バッファメモリ１２２を介して間接的に外部メモリ１４０〜１４３に書き込まれる。
【００３７】
さらに、外部メモリアドレス空間におけるアドレスが利用されるので、ＣＰＵ１１がＩＡ３２アーキテクチャのように３２ビット専用のアーキテクチャであったとしても８ＧＢの外部メモリ１４０〜１４３に問題なくロードストアすることができる。
【００３８】
一方、外部メモリ１４０〜１４３に格納されているページフレームを主記憶１４ａ，１４ｂに書き込む場合には、まずページフォルトハンドラによりベクトルロードコマンドが発行される。そしてベクトルロードコマンドにより外部メモリ１４０〜１４３からバッファメモリ１２２にページフレームを書き込む。
【００３９】
そして、バッファメモリ１２２におけるベクトルロードが完了した後に、バッファメモリ１２２へのリードアクセスを行い、データブロック単位でバッファメモリ１２２からページフレームを読み出し、主記憶１４ａ，１４ｂに一括転送する。このように、バッファメモリ１２２から間接的に外部メモリ１４０〜１４３に格納されているページフレームは、バッファメモリ１２２を介して主記憶１４ａ，１４ｂに転送される。このように、外部メモリ１４０〜１４３は、外部メモリアドレス空間上にマップされ、ページフレーム格納領域として利用される。
【００４０】
メモリモジュール１００のネットワーク制御部１１０は、この外部メモリ１４０〜１４３にアクセスして送受信に関わるデータを読み書きする。さらに、ＣＰＵ１１が制御用のデータをネットワーク制御部１１０に対して読み書きすることにより、ネットワーク制御部１１０が外部メモリ１４０〜１４３にアクセスしつつ、ＣＰＵ１１から指示された通信を実行することでネットワークインタフェースとしての機能を果たす。
【００４１】
図２は、実施の形態１にかかる情報処理システム１によるスワッピング処理を示すフローチャートである。アプリケーションの実行中にページフォルトが発生すると(ステップＳ１００，Ｙｅｓ)、ページフォルトハンドラが呼び出される(ステップＳ１０２)。ここで、ページフォルトハンドラは、ページフォルト制御手段として動作する。
【００４２】
次に、ページフォルトハンドラは、アドレス拡張処理を行う(ステップＳ１０４)。ここで、アドレス拡張処理とは、外部メモリ１４０〜１４３を識別するためのアドレスをアドレス拡張レジスタ１２６に書き込む処理である。本実施の形態においては、メモリバスは、３２ビット幅である。したがって不足している、外部メモリ１４０〜１４３の上位３ビットのアドレスがアドレス拡張レジスタ１２６に書き込まれる。
【００４３】
次に、ページフォルトハンドラは、ベクトルストアコマンドを発行する（ステップＳ１１０）。ここで、ベクトルストアコマンドとは、バッファメモリ１２２に格納されているデータを外部メモリ１４０〜１４３に退避する旨の命令である。なお、ベクトルストアコマンドでは、データを外部メモリ１４０〜１４３のうち連続なアドレスおよび不連続なアドレスのいずれに退避させるかを指定することができる。
【００４４】
ベクトルストアコマンドが発行されると、主記憶１４ａ，１４ｂの所定の領域に格納されているページフレームはメモリバス１６を介してバッファメモリ１２２に転送される。そして、バッファメモリ１２２に順番に書き込まれる（ステップＳ１１２）。次に、外部メモリ制御部１３０のアドレス生成部１３２はベクトルストアコマンドに基づいて、ベクトルストアコマンドによりアクセスすべきコマンドアドレスを生成する。そして、外部メモリ制御部１３０は、バッファメモリ１２２に格納されているページフレームを外部メモリ１４０〜１４３のうち外部メモリ制御部１３０により生成されたコマンドアドレスにより特定される領域に書き込む（ステップＳ１１４）。以上により、主記憶１４ａ，１４ｂに格納されていたページフレームは、メモリバス１６を介して転送され、外部メモリ１４０〜１４３に退避される。以上によりスワップアウトが完了する。
【００４５】
以上のように、ホストＣＰＵ１１からのライトの際には書き込みデータをバッファメモリ１２２にストア後、ベクトルストアコマンドを用いてバッファメモリ１２２から外部メモリ１４０〜１４３にコピーしてデータを書き出す。
【００４６】
このように、ページフォルトが発生した場合には、主記憶１４ａ，１４ｂのページフレームの退避が、メモリバス１６を介して行われるので処理効率を向上させることができる。
【００４７】
さらに、主記憶１４ａ，１４ｂのページフレームの退避が完了すると、次に、ページフォルトハンドラは、ベクトルロードコマンドを発行する（ステップＳ１２０）。ここで、ベクトルロードコマンドとは、外部メモリ１４０〜１４３のうち所定の領域に格納されているデータをバッファメモリ１２２を介して読み出す旨の命令である。なお、ベクトルロードコマンドでは、外部メモリ１４０〜１４３のうち連続なアドレスおよび不連続なアドレスのいずれに対応する領域からもデータを読み出すことができる。
【００４８】
ベクトルロードコマンドが発行されると、外部メモリ制御部１３０は、メモリバス１６を介してベクトルロードコマンドを取得する。そして、アドレス生成部１３２は、ベクトルロードコマンドに基づいて、ベクトルロードコマンドによりアクセスすべきコマンドアドレスを生成する。そして、外部メモリ制御部１３０は、外部メモリ１４０〜１４３に格納されているページフレームをバッファメモリ１２２に順番に書き込む（ステップＳ１２２）。
【００４９】
バッファメモリ１２２のデータサイズ分のページフレームが書き込まれると（ステップＳ１２４，Ｙｅｓ）、バッファメモリ１２２に格納されているページフレームがデータブロック単位でメモリバス１６に送出され、主記憶１４ａ，１４ｂに一括転送される（ステップＳ１２６）。以上により、スワップインが完了する。以上で、実施の形態１にかかる情報処理システム１によるスワッピング処理が完了する。
【００５０】
以上のように、ＣＰＵ１１からのリードの際にはベクトルロードコマンドを用いて外部メモリ１４０〜１４３から必要なデータをバッファメモリ１２２にロード後、ホストＣＰＵ１１はバッファメモリ１２２をリードしてデータを取り込む。
【００５１】
ここで、ＣＰＵ１１がバッファメモリ１２２にデータサイズ分のページフレームが書き込まれたか否かを監視する処理について説明する。具体的には、バッファメモリ１２２を複数のサブデータブロックに分割する。例えばバースト転送による転送バンド幅向上の観点からＣＰＵ１１のキャッシュラインサイズにあわせて６４バイトに分割する。そして、サブデータブロックごとにフラグを設ける。このフラグは、ページフレームを構成するブロックデータの書き込みが完了したか否かを示すものである。ＣＰＵ１１は、このフラグをリードすることにより、各サブデータブロックへのページフレームを構成するブロックデータの書き込みが完了したか否かを監視する。バッファメモリが５１２バイト、ページフレームが４ＫＢの場合は、５１２／６４＝８より８個のサブブロックを含むバッファメモリを用いた転送を４ＫＢ／５１２Ｂ＝８より８回繰り返すことにより、１ページフレーム全体の転送を行うことができる。
【００５２】
そして、ページフレームの書き込み完了を示す値になったことが確認された場合に、実際のリードコマンドを発行し、対応するサブデータブロックを得る。このようにページフレームの書き込み完了を監視することにより、ページフレームの書き込みが完了する前にリードコマンドを発行するのを防止することができる。すなわち、ページフレームの書き込み完了が遅延した場合であっても柔軟に対応することができる。
【００５３】
なお、この場合バッファメモリ１２２は、例えばメモリバスインタフェース１２０に緊密な位置に配置されたレジスタでフラグを実装し、ＣＰＵ１１からリードできるようにするのが好ましい。さらに、複数（例えば６４ビット）のフラグの状態を１回のリードアクセスにより取得可能とするのが好ましい。
【００５４】
以上のように、実施の形態１にかかる情報処理システム１は、ページフォルトハンドラがスワップイン、スワップアウトを行う場合には、ディスクにアクセスするのにかえて、より転送速度の速いメモリバス１６に接続されているバッファメモリ１２２にアクセスする。これにより、処理効率の向上を図ることができる。
【００５５】
例えば、主記憶１４ａ，１４ｂが１ＧＢしかなく例えば合計３ＧＢの配列データをアクセスしなければならないようなアプリケーションプログラムを実行するとする。このとき、ページフォルトが発生してページフレームとの間でスワップイン・スワップアウトが発生したとする。この場合であっても、実施の形態１にかかる情報処理システム１においては、主記憶並みに高いバンド幅かつ低遅延でページフレームをアクセスすることができる。
【００５６】
したがって、ページフォルトが発生した場合に、ハードディスクアクセスや、ＳＣＳＩ等の主記憶に比べると低バンド幅かつ高遅延であるインタフェースを介したアクセスを行うようなシリコンディスクへのアクセスで発生するような性能低下を防ぐことができる。
【００５７】
さらに、３２ビットＯＳの場合で主記憶が４ＧＢ、６４ビットＯＳの場合で９ＧＢあるかのような性能で、アプリケーションプログラムに全く変更を加えることなく処理を実行することができる。
【００５８】
以上のように、本実施の形態にかかる情報処理システム１は、メモリモジュール１００をディスクとみなして処理を行うことができる。
【００５９】
このように、アプリケーションプログラムを改造することなく、比較的小さな安価なパーソナルコンピュータを構成要素とし、十分に大きな容量を有するシリコンディスクを搭載することにより、ＯＳの不安定動作や性能低下を回避しつつ、十分に大きな主記憶容量を有するシステム上で全てを主記憶上で処理する場合に匹敵するアプリケーション処理性能を発揮することができる。
【００６０】
さらに、実施の形態１にかかる情報処理システム１は、メモリモジュール１００を主記憶とみなして処理を行うことができる。
【００６１】
図３は、実施の形態１にかかる情報処理システム１によるプリロード処理を示すフローチャートである。プリロード処理においては、メモリモジュール１００は、プログラマがコマンドでアドレスを指定して操作できる主記憶のように動作させることができる。ここでは、ページフレームの高速転送のみならず、不連続アクセス時のキャッシュのミスヒットの多発を回避するために、プリロードコマンドとしてベクトルロードコマンドが発行された場合について説明する。
【００６２】
ＣＰＵ１１によりベクトルロードコマンドが発行されると（ステップＳ２００）、ベクトルロードコマンドは、ノースブリッジ１２およびメモリバス１６を介してメモリモジュール１００に転送される。
【００６３】
次に、メモリモジュール１００において、ベクトルロードコマンドが起動される。そして、外部メモリ制御部１３０のアドレス生成部１３２においてベクトルロードコマンドにおいてアクセスすべきコマンドアドレスが生成される。
【００６４】
次に、外部メモリ制御部１３０は、アドレス生成部１３２により生成されたコマンドアドレスに基づいて外部メモリ１４０〜１４３にアクセスし、得られたデータを順次バッファメモリ１２２に書き込む(ステップＳ２０２)。
【００６５】
なお、図４の左側に示された１列分をキャッシュの１ラインとした場合には、通常の主記憶で不連続アクセスする場合には、黒丸のデータしか有効でないのに対し、バッファメモリ１２２にベクトルロードコマンドにより黒丸のデータを集めてからキャッシュに取り込むことによりヒット率を上げることができる。
【００６６】
一方、ＣＰＵ１１は、バッファメモリ１２２にバッファメモリ１２２分のデータが格納されたか否か、すなわちプリロードが完了したか否かを監視する。プリロードが完了すると(ステップＳ２０６，Ｙｅｓ)、リードコマンドを発行する（ステップＳ２０８）。
【００６７】
具体的には、バッファメモリ１２２を複数のサブデータブロックに分割する。そして、サブデータブロックごとにフラグを設ける。このフラグは、プリロードが完了したか否かを示すものである。ＣＰＵ１１は、このフラグをリードすることにより、各サブデータブロックのプリロードが完了したか否か、すなわちサブデータブロックにデータが格納されたか否かを監視する。
【００６８】
そして、プリロード完了を示す値になったことが確認された場合に、実際のリードコマンドを発行し、対応するデータブロックを得る。このようにプリロードの完了を監視することにより、プリロードが完了する前にリードコマンドを発行するのを防止することができる。すなわち、プリロード完了が遅延した場合であっても柔軟に対応することができる。
【００６９】
以上のようにＣＰＵ１１は、リードコマンドを発行し（ステップＳ２０８）、ノースブリッジ１２およびメモリバス１６を介してリードコマンドをメモリモジュール１００に転送する。メモリモジュール１００は、リードコマンドを取得すると、リードコマンドに対応するデータ、すなわちバッファメモリ１２２に格納されているデータをデータブロック単位でＣＰＵ１１に一括転送する（ステップＳ２１０）。以上で、情報処理システム１におけるプリロード処理が完了する。
【００７０】
以上のように、実施の形態１にかかる情報処理システム１は、メモリモジュール１００を主記憶とみなしプリロード処理を行うことができる。
【００７１】
さらに、外部メモリ１４０〜１４３に対し、図２において説明したようにページフォルトハンドラ経由でディスクとみなしてアクセスする領域と、アプリケーションプログラム中から主記憶とみなしてアクセスする領域とを設け、これらの領域が可変となるように制御する。そして、処理ごとにメモリモジュール１００をディスクとみなして利用するか、主記憶とみなして利用するかを切り替える。
【００７２】
具体的には、ＯＳにおいてスワップ領域の割り当てを変更可能なように設定しておく。すなわち、アドレス変換テーブルにおける仮想アドレスの属性として、主記憶とみなしてアクセス可能な領域か、ディスクとみなしてアクセス可能な領域かを設定しておく。このように、ＯＳはアクセス可能領域指定手段として動作する。
【００７３】
例えば、主記憶が大きく連続アドレス領域への読み書きが高速であることが好ましいアプリケーションを実行するとする。この場合には、外部メモリ１４０〜１４３上にディスクとみなしてアクセスする領域を増加させるのが好ましい。これにより、アプリケーションプログラムを高速に実行することができる。
【００７４】
逆に大量なデータに対する不連続なアドレスへの等間隔やランダムな読み書きが高速であることが好ましいアプリケーションを実行するとする。この場合には、アプリケーションプログラム中から主記憶とみなしてアクセスする領域を増加させるのが好ましい。これにより、アプリケーションがこのような処理に対応していることが要求されるものの、アプリケーションプログラムを高速に実行することができる。
【００７５】
（実施の形態２）
図５は、実施の形態２にかかる情報処理システム１の全体構成を示す図である。実施の形態２にかかる情報処理システム１のハードウェア構成は、実施の形態１にかかる情報処理システム１と同様である。実施の形態２においては、汎用ページフォルトハンドラが起動すると、専用ドライバが起動する。そして、この専用ドライバにより実施の形態１において説明したようなメモリモジュール１００と主記憶１４ａ，１４ｂの間のスワッピング処理が行われる。
【００７６】
専用ドライバは、外部メモリアドレス空間にマップされた外部メモリ１４０〜１４３を仮想的なディスクとしてみせかけるためのドライバである。すなわち、ページフォルト制御手段として機能する。専用ドライバは、主記憶をアクセスする手続きの部分を、実施の形態１において説明したアドレス拡張機能を有するベクトルロードストアコマンドを用いたデータ転送手順に切り換えることにより実現することができる。これにより、主記憶とは異なる大容量で主記憶並みの高バンド幅低遅延でアクセス可能な外部メモリにＯＳ的にはディスクとしてアクセスが可能となる。
【００７７】
このようにして、ひとたびメモリモジュール１００の外部メモリ１４０〜１４３がＣＰＵ１１からディスクとみなしてアクセスが可能になれば、ＯＳがＷｉｎｄｏｗｓ（登録商標）の場合には、仮想的なディスクをページフレームを格納する領域として仮想記憶のスワップファイルを作成することができる。
【００７８】
図６は、実施の形態２におけるスワッピング処理を示すフローチャートである。ページフォルトが発生すると、汎用のページフォルトハンドラが呼び出される(ステップＳ１３０)。次に、さらに専用デバイスが呼び出される(ステップＳ１３２)。そして、専用デバイスにより、ステップＳ１０４以降の処理が行われる。ここで、専用デバイスは、ページフォルト制御手段として動作する。
【００７９】
このように、実施の形態２にかかる情報処理システム１においても、実施の形態１にかかる情報処理システム１と同様に、スワッピング処理において、ページフレームが主記憶並みに高いバンド幅かつ低遅延アクセスですることができる。
【００８０】
実施の形態２にかかる情報処理システム１のこれ以外の構成および処理は、実施の形態１にかかる情報処理システム１の構成および処理と同様である。
【００８１】
（実施の形態３）
図７は、実施の形態３にかかる情報処理システム２の全体構成を示す図である。図７に示すように、情報処理システム２は、実施の形態１または実施の形態２において説明した情報処理システム１を複数備えたＰＣクラスタである。複数の情報処理システム１は、それぞれネットワーク５を介して接続されている。
【００８２】
各情報処理システム１は、ネットワーク５を介して遠隔ノード、すなわち他の情報処理システム１上に設けられた外部メモリアクセスすることができる。実施の形態１において図１を参照しつつ説明したように各情報処理システム１は、ネットワーク制御部１１０を介して遠隔ノード上の外部メモリをアクセスすることができる。
【００８３】
そこで、実施の形態３にかかる情報処理システム１においては、実施の形態１において情報処理システム１が備える外部メモリ１４０〜１４３に対するアクセスの一部を遠隔ノード上の外部メモリへのアクセスに拡張することとする。これにより、ＰＣクラスタ全体に存在する外部メモリを仮想的なディスクとしてアクセス可能となる。
【００８４】
そして、遠隔ノード上の外部メモリにページフレームを格納しておくことにより、ＰＣクラスタ全体に存在する外部メモリを仮想的に主記憶としてアクセス可能なＰＣクラスタを構築することができる。
【００８５】
図８は、以上のように構成された実施の形態３にかかる情報処理システム１によるスワッピング処理を示すフローチャートである。ページフォルトが発生すると(ステップＳ３００)、ページフォルトハンドラが呼び出される(ステップＳ１３０)。次に、ページフォルトハンドラは、遠隔ノード上の外部メモリに対応してアドレス拡張を行う(ステップＳ１０４)。
【００８６】
次に、ベクトルストアコマンドを発行する(ステップＳ１１０)。これにより、主記憶１４ａ，１４ｂのページフレームがバッファメモリ１２２に退避される(ステップＳ１１２)。さらに、バッファメモリ１２２に格納されたページフレームはネットワーク制御部１１０を介して、遠隔ノード上の外部メモリに退避される(ステップＳ１４０)。
【００８７】
次に、ページフォルトハンドラは、ベクトルロードコマンドを発行する(ステップＳ１４０)。これにより、遠隔ノード上の外部メモリのページフレームがバッファメモリ１２２に書き込まれる(ステップＳ１４２)。データサイズ分のページフレームの書き込みが完了すると(ステップＳ１２４，Ｙｅｓ)、バッファメモリ１２２のページフレームが主記憶１４ａ，１４ｂに書き込まれる(ステップＳ１２６)。以上で、スワッピング処理が完了する。
【００８８】
以上のように、各情報処理システム１は、遠隔ノード上の外部メモリを自身の外部メモリと同様に利用することによりスワッピング処理を行うことができる。
【００８９】
例えば、２０台の情報処理システム１を備えた情報処理システム２においては、外部メモリの合計は１６０ＧＢとなる。各ノードプロセッサすなわち情報処理システム１のＣＰＵ１１において６４ビットＯＳが稼動していれば、２０台のＣＰＵ１１が１６０ＧＢの仮想的な主記憶をアクセス可能となる。
【００９０】
このように、情報処理システム２においては、中程度の大きさのデータベースのデータ全体を大容量な仮想的な主記憶上に保持させることができる。したがって、データベース検索処理などの処理を大幅に高速化することが可能となる。
【００９１】
田邊，箱崎，安藤，土肥，中條，宮代，北村，天野：「メモリモジュール上での等間隔アクセス連続化の効果」情報処理学会計算機アーキテクチャ研究会（Ｍａｒｃｈ  ２００５）に記載されているように、ベクトルロードストア機能付きメモリモジュールによれば主記憶上に格納されたデータベース検索処理を逐次処理で最大２５倍程度高速化することができる。したがって、実施の形態３にかかる情報処理システム１においては、その効果をより大規模な容量を有するデータベースにおいても発揮することが可能となる。
【００９２】
ところで、ＰＣクラスタや並列計算機のプロセシングエレメントにおける主記憶を、ネットワーク越しにディスクとみなすことができるドライバを用いることで、上記の主記憶を寄せ集めて半導体拡張記憶を構成する技術が存在する。例えば日立製作所のスーパーテクニカルサーバーＳＲ１１０００などにおいて実装されている。
【００９３】
ただし、この方式はただでさえ容量不足になりがちなプロセシングエレメントにおける主記憶の一部を本来の主記憶として用いることができなくなるためにあまり多くの容量を拡張記憶として提供することは困難であり、使い方を誤るとかえって性能低下をもたらすという欠点があった。また、ネットワーク越しでアクセスする頻度が多くなるためにネットワークに対する負担も大きい。
【００９４】
ＰＣクラスタや並列計算機の遠隔ノード上の主記憶をＲＡＭディスクとして設定する方式は、前記の方式よりは容量を多くできるものの、主記憶容量に厳しい限界があるため、あまり多くの容量を拡張記憶として提供することは困難であり、容量設定を誤るとかえって性能低下をもたらすという欠点があった。また、ネットワークに対する負担も大きい。
【００９５】
これに対し、実施の形態３にかかる情報処理システム２においては、ネットワークを介して転送されたデータもバッファメモリ１２２に格納され、バッファメモリ１２２と主記憶１４ａ，１４ｂとの間でデータ転送が行われるため、各部の性能低下を生じることなく処理効率を向上させることができる。
【図面の簡単な説明】
【００９６】
【図１】情報処理システム１の全体構成を示す図である。
【図２】実施の形態１にかかる情報処理システム１によるスワッピング処理を示すフローチャートである。
【図３】実施の形態１にかかる情報処理システム１によるプリロード処理を示すフローチャートである。
【図４】外部メモリ制御部１３０の処理を説明するための図である。
【図５】実施の形態２にかかる情報処理システム１の全体構成を示す図である。
【図６】実施の形態２におけるスワッピング処理を示すフローチャートである。
【図７】実施の形態３にかかる情報処理システム２の全体構成を示す図である。
【図８】実施の形態３にかかる情報処理システム１によるスワッピング処理を示すフローチャートである。
【符号の説明】
【００９７】
１，２  情報処理システム
５  ネットワーク
１１  ＣＰＵ
１２  ノースブリッジ
１３  サウスブリッジ
１４ａ，１４ｂ  主記憶
１６  メモリバス
１００  メモリモジュール
１１０  ネットワーク制御部
１２０  メモリバスインタフェース
１２２  バッファメモリ
１２４  バッファメモリ監視部
１２６  アドレス拡張レジスタ
１３０  外部メモリ制御部
１３２  アドレス生成部
１４０  外部メモリ
１５０  情報処理装置
【図１】
2007041813.tif 000003
【図２】
2007041813.tif 000004
【図３】
2007041813.tif 000005
【図４】
2007041813.tif 000006
【図５】
2007041813.tif 000007
【図６】
2007041813.tif 000008
【図７】
2007041813.tif 000009
【図８】
2007041813.tif 000010